Intel 8051 内部RAM组织
8051 微控制器的内部RAM分为两部分。第一部分用于寄存器组、位寻址内存位置、堆栈等。另一部分是SFR(特殊功能寄存器)区域。该微控制器只能使用SFR区域中的21个地址。在这21个位置中,有11个是位寻址SFR位置。
位寻址SFR如下所示:
寄存器 | 字节地址 | 位地址 |
---|---|---|
P0 (端口0) | 80H | 80H 至 87H |
P1 (端口1) | 90H | 90H 至 97H |
P2 (端口2) | A0H | A0H 至 A7H |
P3 (端口3) | B0H | B0H 至 B7H |
PSW | D0H | D0H 至 D7H |
寄存器A(累加器) | E0H | E0H 至 E7H |
寄存器B | F0H | F0H 至 F7H |
TCON(定时器控制) | 88H | 88H 至 8FH |
SCON(串行控制) | 98H | 98H 至 9FH |
IE(中断允许) | A8H | A8H 至 AFH |
IP(中断优先级) | B8H | B8H 至 BFH |
现在让我们详细了解PSW寄存器。
PSW(程序状态字)基本上是传统的标志寄存器。它是位寻址SFR。PSW的字节地址是D0H。虽然位范围D0H到D7H被认为是PSW,但只有7位有效。
标志位 | 位地址 | 描述 |
---|---|---|
Cy | D7H | 进位标志。它受执行加法、减法、带进位旋转等指令的影响。它也可以用作1位累加器。 |
Ac | D6H | 辅助进位标志。用于BCD运算。此标志用户无法直接使用。 |
F0 | D5H | 它是用户定义的标志位。此标志是通用标志。 |
RS1 和 RS0 | D4H 和 D3H | 这两个位用于寄存器选择。这两个标志可以选择四个寄存器组。 |
Ov | D2H | 这是溢出标志。当加法或减法结果超出带符号的8位范围(-128到127)时,此标志被启用。 |
X | D1H | 这是为将来使用保留的。 |
P | D0H | 这是奇偶校验标志。执行指令后,它检查累加器中1的个数,并据此启用或禁用。 |
8085 有 Z 标志(零标志)。该标志未在此 8051 微控制器中实现。在这里,可以通过直接测试累加器内容来检查零或非零条件。
RS1 和 RS0 用于选择寄存器组,如下所示:
RS1 | RS0 | 寄存器组 |
---|---|---|
0 | 0 | 寄存器组 0 |
0 | 1 | 寄存器组 1 |
1 | 0 | 寄存器组 2 |
1 | 1 | 寄存器组 3 |
我们已经显示了11个可寻址位。其余10位不可位寻址。
寄存器 | 字节地址 |
---|---|
SP(堆栈指针) | 81H |
DPL(数据指针低位) | 82H |
DPH(数据指针高位) | 83H |
PCON(电源控制) | 87H |
TMOD(定时器模式) | 89H |
TL0(定时器0低位) | 8AH |
TL1(定时器1低位) | 8BH |
TH0(定时器0高位) | 8CH |
TH1(定时器1低位) | 8DH |
SBUF(串行缓冲器) | 99H |
复位8051后,SFA将遵循以下规则:
堆栈指针将保存07H
所有端口(P0到P3)将包含FFH
SBUF将保存垃圾值
所有其他SFA将保存00H
广告