简述
特殊功能寄存器(或特殊用途寄存器,或简称为特殊寄存器)是微处理器内的寄存器,用于控制或监视微处理器的各种功能。由于特殊寄存器与处理器的某些特殊功能或状态密切相关,因此它们可能无法由普通指令(如添加、移动等)直接写入。相反,某些处理器架构中的某些特殊寄存器需要特殊指令来修改它们。
在 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 地址的两点。
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 寄存器的名称替换为其地址。
我们可以使用 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 的第二个特殊功能寄存器中可用。