MCS-51单片机在物理结构上有四个存储空间:
1、片内程序存储器
2、片外程序存储器
3、片内数据存储器
4、片外数据存储器
但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:
1、片表里一致编址的64K的程序存储器地址空间(MOVC)
2、256B的片内数据存储器的地址空间(MOV)
3、以及64K片外数据存储器的地址空间(MOVX)
在拜访三个不同的逻辑空间时,应选用不同方式的指令(详细咱们在后面的指令体系学习时将会解说),以发生不同的存储器空间的选通信号。
程序内存ROM
寻址规划:0000H ~ FFFFH容量64KB
EA = 1,寻址内部ROM;EA = 0,寻址外部ROM
地址长度:16位
效果:寄存程序及程序运行时所需的常数。
七个具有特别意义的单元是:
0000H ——体系复位,PC指向此处;
0003H ——外部中止0进口
000BH —— T0溢出中止进口
0013H ——外中止1进口
001BH —— T1溢出中止进口
0023H ——串口中止进口
002BH —— T2溢出中止进口
留意:
①但要留意的是8051内部数据存储器是256byte(字节)。拜访低128B能够直接寻址也能够直接寻址,拜访8052内部数据存储器高128B时只能直接寻址(MOV @R0、@R1、DPTR),拜访特别功用寄存器区SFR时只能直接寻址(MOV A,80H)。
②外部RAM是经过单片机外部总线衔接的,有可能在片内。如STC89C58RD+有1280B(字节)坐落片内的外部SRAM
再能够经过这个图了解51单片机的存储器结构
变量界说及其存储形式
C言语中变量要“先声明后运用”。
变量界说格局:
[存储品种]数据类型[存储器类型]变量名表;
存储品种:主动(auto)、外部(extern)、静态(static)、寄存器(register)
存储器类型:
data可直接寻址的片内数据存储器RAM(128字节)。1个或2个指令周期,拜访速度较快。
bdata可位寻址的片内数据存储器RAM(16字节)。
idata直接拜访的片内数据存储器RAM(256字节)。
pdata分页寻址的片外存储器RAM(256字节)——不常用。
xdata片外数据存储器RAM(64k字节)至少3个指令周期。
code程序存储器ROM(64k字节)
留意:拜访片内数据存储器(data,bdata,idata)比拜访片外数据存储器(xdata,pdata)相对要快一些,因而可将常常运用的变量至于片内数据储存器,而将规划较大的,或不常运用的数据至于片外数据储存器中。
如果在变量界说时省略存储类型标识符,编译器会主动挑选默许的存储类型。编译时运用的存储器形式small、compact或large来规则默许存储器类型。
SMALL:参数及局部变量放入片内数据存储器(data);
COMPACT:参数及局部变量放入分页片外数据存储器(pdata);
LARGE:参数及局部变量放入片外数据存储器(xdata);
Keil中Option for Target ‘Target1’选项
51单片机外部程序存储器(ROM)和外部数据存储器(RAM)的总线扩展电路图
参考资料:
1)8051单片机的存储器结构
group.ednchina.com/377/3646.aspx
2)Keil C51 Compiler Basics – The 8051 Architecture
http://www.esacademy.com/automation/docs/c51primer/c02.htm
3)单片机C言语日记九——爬山的人ednchina blog
http://blog.ednchina.com/klyzh2003/190102/message.aspx
4)在51系列中data,idata,xdata,pdata的差异
http://blog.ednchina.com/liyanesd/5800/message.aspx