嵌入式系统 - 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 中。