嵌入式系统入门 – SFR 寄存器
简述
特殊功能寄存器(或特殊用途寄存器,或简称为特殊寄存器)是微处理器内的寄存器,用于控制或监视微处理器的各种功能。由于特殊寄存器与处理器的某些特殊功能或状态密切相关,因此它们可能无法由普通指令(如添加、移动等)直接写入。相反,某些处理器架构中的某些特殊寄存器需要特殊指令来修改它们。
在 8051 中,寄存器 A、B、DPTR 和 PSW 是通常称为 SFR(特殊功能寄存器)的寄存器组的一部分。可以通过名称或地址访问 SFR。
下表显示了 SFR 及其地址的列表。
| Byte Address | Bit Address | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| FF | |||||||||
| F0 | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B |
| E0 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
| D0 | D7 | D6 | D5 | D4 | D3 | D2 | - | D0 | PSW |
| B8 | - | - | - | BC | BB | BA | B9 | B8 | IP |
| B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
| A2 | AF | - | - | AC | AB | AA | A9 | A8 | IE |
| A0 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
| 99 | 没有位可寻址 | SBUF | |||||||
| 98 | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 | SCON |
| 90 | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 |
| 8D | 没有位可寻址 | TH1 | |||||||
| 8C | 没有位可寻址 | TH0 | |||||||
| 8B | 没有位可寻址 | TL1 | |||||||
| 8A | 没有位可寻址 | TL0 | |||||||
| 89 | 没有位可寻址 | TMOD | |||||||
| 88 | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 | TCON |
| 87 | 没有位可寻址 | PCON | |||||||
| 83 | 没有位可寻址 | DPH | |||||||
| 82 | 没有位可寻址 | DPL | |||||||
| 81 | 没有位可寻址 | SP | |||||||
| 80 | 87 | 87 | 85 | 84 | 83 | 82 | 81 | 80 | P0 |
考虑以下关于 SFR 地址的两点。
-
特殊功能寄存器的地址可以在 80H 到 FFH 之间。这些地址都在 80H 以上,因为 00 到 7FH 的地址是 8051 内部 RAM 存储器的地址。
-
并非 80 到 FF 的所有地址空间都被 SFR 使用。未使用的位置,80H 到 FFH,是保留的,不得由 8051 编程器使用。
| CY | PSW.7 | 进位标志 |
| AC | PSW.6 | 辅助进位标志 |
| F0 | PSW.5 | 标志 0 可供用户用于一般用途。 |
| RS1 | PSW.4 | 寄存器组选择器位 1 |
| RS0 | PSW.3 | 寄存器组选择器位 0 |
| OV | PSW.2 | 溢出标志 |
| - | PSW.1 | 用户可定义的标志 |
| P | PSW.0 | 奇偶标志。在指令周期内由硬件置位/清零以指示累加器中 1 位的偶数/奇数。 |
在以下示例中,SFR 寄存器的名称替换为其地址。
| CY | AC | F0 | RS1 | RS0 | OV | - | P |
|---|
我们可以使用 RS0 和 RS1 位选择相应的 寄存器组 位。
| RS1 | RS2 | 寄存器组 | 地址 |
|---|---|---|---|
| 0 | 0 | 0 | 00H-07H |
| 0 | 1 | 1 | 08H-0FH |
| 1 | 0 | 2 | 10H-17H |
| 1 | 1 | 3 | 18H-1FH |
程序状态字 (PSW) 包含状态位以反映 CPU 的当前状态。8051 变体提供了一个特殊功能寄存器 PSW,其中包含此状态信息。8251 提供了两个额外的状态标志 Z 和 N,它们在称为 PSW1 的第二个特殊功能寄存器中可用。