mcs-51 内部有 128 个字节的数据存储器 ram ,它们可以作为数据缓冲器、堆栈、工作寄存器和软件标志等使用。 cpu 对内部 ram 有丰富的操作指令。在编程时经常用到它们,内部 ram 地址为 00h ~ 7fh ,不同的地址区域内,规定的功能不完全相同。128 字节地址空间的 ram 中不同的地址区域功能分配为:工作寄存器区(00h-1fh)、位地址区(20h-2fh)、堆栈和缓冲区(30h-7fh )、特殊功能寄存器 sfr 区(80h ~ ffh),下面分别说明。
① 工作寄存器区
单片机的内部工作寄存器以 ram 形式组成,即工作寄存器包含在内部数据存储器中。地址为 00h ~ 1fh 单元,内部 ram 的低 32 字节分成 4 个工作寄存器区,每一个区有 8 个工作寄存器,编号为 r0 ~ r7 。
② 位寻址空间
cpu 不仅对内部 ramr 20h ~ 2fh 这 16 个单元有字节寻址功能,而且具有位寻址功能(可以单独读写某一位)。给这 128 位赋以位地址为 00h ~ 7fh , cpu 能直接寻址这些位。
位地址空间
字节地址
寄存器名
位 地 址
2fh
7fh
7eh
7dh
7ch
7bh
7ah
79h
78h
2eh
77h
76h
75h
74h
73h
72h
71h
70h
2dh
6fh
6eh
6dh
6ch
6bh
6ah
69h
68h
2ch
67h
66h
65h
64h
63h
62h
61h
60h
2bh
5fh
5eh
5dh
5ch
5bh
5ah
59h
58h
2ah
57h
56h
55h
54h
53h
52h
51h
50h
29h
4fh
4eh
4dh
4ch
4bh
4ah
49h
48h
28h
47h
46h
45h
44h
43h
42h
41h
40h
27h
3fh
3eh
3dh
3ch
3bh
3ah
39h
38h
26h
37h
36h
35h
34h
33h
32h
31h
30h
25h
2fh
2eh
2dh
2ch
2bh
2ah
29h
28h
24h
27h
26h
25h
24h
23h
22h
21h
20h
23h
1fh
1eh
1dh
1ch
1bh
1ah
19h
18h
22h
17h
16h
15h
14h
13h
12h
11h
10h
21h
0fh
0eh
0dh
0ch
0bh
0ah
09h
08h
20h
07h
06h
05h
04h
03h
02h
01h
00h
③ 堆栈和数据缓冲区
原则上mcs-51单片机的堆栈可以设在内部ram的任意区域内,但是一般设在30h~7fh的范围内。栈顶的位置由堆栈指针 sp 指出。
④ 特殊功能寄存器 sfr (专用寄存器)区
mcs-51 单片机内除程序计数器(pc)和 4 个工作寄存器区外,所有其它寄存器如 i/o 口锁存器、定时器、数据地址指针,各种控制寄存器都是以特殊功能寄存器(sfr)的形式出现的。 8051 有 21 个特殊功能寄存器,它们离散地分布在 80h~ffh 的地址空间内,并允许像访问内部ram一样方便地访问特殊功能寄存器。