嵌入式系统 - SFR 寄存器
特殊功能寄存器(或特殊用途寄存器,或简称特殊寄存器)是微处理器内的寄存器,用于控制或监视微处理器的各种功能。由于特殊寄存器与处理器的某些特殊功能或状态紧密相关,因此它们可能无法通过普通指令(如添加、移动等)直接写入。相反,某些处理器架构中的某些特殊寄存器需要特殊指令来修改它们。
在 8051 中,寄存器 A、B、DPTR 和 PSW 是通常称为 SFR(特殊功能寄存器)的寄存器组的一部分。SFR 可以通过其名称或地址进行访问。
下表显示了 SFR 及其地址的列表。
字节地址 | 位地址 | ||||||||
---|---|---|---|---|---|---|---|---|---|
FF | |||||||||
F0 | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | 乙 |
E0 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
D0 | D7 | D6 | D5 | D4 | D3 | D2 | - | D0 | PSW |
B8 | - | - | - | 公元前 | BB | 学士 | B9 | B8 | 知识产权 |
B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
A2 | AF | - | - | 交流电 | AB | AA | A9 | A8 | IE |
A0 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
99 | 不可位寻址 | SBUF | |||||||
98 | 9楼 | 9E | 9D | 9C | 9B | 9A | 99 | 98 | 斯康 |
90 | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 |
8D | 不可位寻址 | TH1 | |||||||
8C | 不可位寻址 | TH0 | |||||||
8B | 不可位寻址 | TL1 | |||||||
8A | 不可位寻址 | TL0 | |||||||
89 | 不可位寻址 | TMOD | |||||||
88 | 8楼 | 8E | 8D | 8C | 8B | 8A | 89 | 88 | 总控 |
87 | 不可位寻址 | 电脑控制网络 | |||||||
83 | 不可位寻址 | DPPH | |||||||
82 | 不可位寻址 | 数据保护层 | |||||||
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 | 携带旗帜 |
交流电 | PSW.6 | 辅助进位标志 |
F0 | PSW.5 | 标志 0 可供用户用于一般用途。 |
RS1 | PSW.4 | 寄存器组选择器位 1 |
RS0 | PSW.3 | 寄存器组选择器位 0 |
OV | PSW.2 | 溢出标志 |
- | PSW.1 | 用户可定义的标志 |
磷 | PSW.0 | 奇偶校验标志。在指令周期内由硬件置位/清零,以指示累加器中 1 位的偶数/奇数。 |
在以下示例中,SFR 寄存器的名称替换为其地址。
CY | 交流电 | F0 | RS1 | RS0 | OV | - | 磷 |
---|
我们可以使用 RS0 和 RS1 位选择相应的寄存器组位。
RS1 | RS2 | 注册银行 | 地址 |
---|---|---|---|
0 | 0 | 0 | 00H-07H |
0 | 1 | 1 | 08H-0FH |
1 | 0 | 2 | 10点-17点 |
1 | 1 | 3 | 18H-1FH |
程序状态字 (PSW) 包含反映 CPU 当前状态的状态位。8051 变体提供了一个特殊功能寄存器 PSW,具有此状态信息。8251 提供两个附加状态标志 Z 和 N,可在称为 PSW1 的第二个特殊功能寄存器中使用。