一、单片机存储器组织结构
C51单片机存储器分类:
物理结构:ROM(一般放程序)、RAM(一般放数据)
功能角度:程序存储器、数据存储器(51单片机数据存储器又分:普通数据存储器、位寻址存储器、特殊功能寄存器存储器)
所在位置:片内存储器、片外存储器
二、程序存储器
三、片外、片内数据存储器
片外数据存储器空间:
用DPTR直接访问![5P%UXD2F6G2]M{D)JV)6EJU.png](/uploads/projects/u21314038@lircqs/27dc18b53c3a81efacc7219331c7341d.png)
整个256个字节的片内数据存储器空间【可以使用R0/R1寄存器间接访问(地址存于R0/R1,再找到该地址访问)】:<br />低128BRAM区(可以直接寻址,也可以用R0/R1间接访问):<br />![@`OZ)%3C$TC%O]058)G)1`G.png](/uploads/projects/u21314038@lircqs/31e4d5c19d173072c48acaaf1d9de117.png)
- 数据缓冲区80B(30H~7FH)——和高128B空间一起用于存放程序运行的临时变量或用作堆栈
- 位寻址区16B(20H~2FH)
- 工作寄存器区32B(00H~1FH)——改变PSW状态寄存器的RS1和RS0选择工作寄存器
注:
1、由于高128字节区的物理地址同时也是特殊功能寄存器(SFR)的物理地址,为了避免混乱
我们规定:对于80H~FFH,
- 若直接寻址,则访问SFR区,
- 若间接寻址,则访问高128BRAM区
2、使用关键字指定变量存放空间
data:变量位于可直接寻址的片内数据存储器区域:char data i;
idata:变量位于可间接寻址的片内数据存储器区域:char idata i;
bdata:变量位于位寻址区:
char bdata i;
sbit k = i^2; //把i的第二位的值赋给k,通过k改变该位的值
k = 0;
xdata:变量位于整个片外存储器区域
pdata:变量位于片外存储器低256字节范围
四、特殊功能寄存器
寻址方式:按字节直接寻址
1、使用物理地址
2、使用寄存器标号:
sfr P1 = 0x90H //sfr定义的变量指向特殊功能寄存器,P1代表指向P1区
P1 = 25;

