嵌入式系统 - SFR 寄存器
特殊功能寄存器(或特殊用途寄存器,或简称为特殊寄存器)是微处理器内控制或监控微处理器各种功能的寄存器。由于特殊寄存器与处理器的某些特殊功能或状态密切相关,因此可能无法通过常规指令(如添加、移动等)直接写入。相反,某些处理器架构中的某些特殊寄存器需要特殊指令才能修改它们。
在 8051 中,寄存器 A、B、DPTR 和 PSW 是通常称为 SFR(特殊功能寄存器)的寄存器组的一部分。可以通过名称或地址访问 SFR。
下表列出了 SFR 及其地址。
字节地址 | 位地址 | ||||||||
---|---|---|---|---|---|---|---|---|---|
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 存储器的地址。
SFR 并未使用 80 至 FF 的所有地址空间。未使用的位置(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 中。