原创 51单片机C语言学习笔记3: 存储器结构

2009-4-12 19:32 6778 12 9 分类: MCU/ 嵌入式

51单片机C语言学习笔记3 存储器结构<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


MCS-51单片机在物理结构上有四个存储空间:


1、片内程序存储器
2
、片外程序存储器
3
、片内数据存储器
4
、片外数据存储器


 


但在逻辑上,即从用户的角度上,8051单片机有三个存储空间:


1、片内外统一编址的64K的程序存储器地址空间(MOVC
2
256B的片内数据存储器的地址空间(MOV
3
、以及64K片外数据存储器的地址空间(MOVX
在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。


 


程序内存ROM


寻址范围:0000H ~ FFFFH 容量64KB
EA = 1
,寻址内部ROMEA = 0,寻址外部ROM
地址长度:16
作用: 存放程序及程序运行时所需的常数。
七个具有特殊含义的单元是:
0000H ——
系统复位,PC指向此处;
0003H ——
外部中断0入口
000BH —— T0
溢出中断入口
0013H ——
外中断1入口
001BH —— T1
溢出中断入口
0023H ——
串口中断入口
002BH —— T2
溢出中断入口


 


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


d64aee8e-0aea-46d4-bdbb-46236689c96b.JPG


 


 


注意:


但要注意的是8051内部数据存储器是256byte(字节)。访问128B可以直接寻址也可以间接寻址,访问8052内部数据存储器128B时只能间接寻址MOV @R0@R1DPTR),访问特殊功能寄存器区SFR时只能直接寻址MOV A,80H)。



 

d0d1613a-f7bf-4004-ba33-b4689c3fe698.JPG


 


 


外部RAM是通过单片机外部总线连接的,有可能在片内。如STC89C58RD+1280B(字节) 位于片内的外部SRAM


 


再可以通过这个图了解51单片机的存储器结构



 

点击看大图 


 


变量定义及其存储模式


C语言中变量要先声明后使用


变量定义格式:


[存储种类]  数据类型  [存储器类型]  变量名表;


存储种类:自动(auto)、外部(extern)、静态(static)、寄存器(register


存储器类型:


data   可直接寻址的片内数据存储器RAM128字节)。1个或2个指令周期,访问速度较快。


bdata  可位寻址的片内数据存储器RAM16字节)。


idata   间接访问的片内数据存储器RAM256字节)。


pdata  分页寻址的片外存储器RAM256字节)——不常用。


xdata  片外数据存储器RAM64k字节)至少3个指令周期。


code   程序存储器ROM64k字节)


 



点击看大图 


 


注意:访问片内数据存储器(data,bdata,idata)比访问片外数据存储器(xdata,pdata)相对要快一些,因此可将经常使用的变量至于片内数据储存器,而将规模较大的,或不常使用的数据至于片外数据储存器中。


 


 


如果在变量定义时略去存储类型标识符,编译器会自动选择默认的存储类型。编译时使用的存储器模式smallcompactlarge来规定默认存储器类型。


 


SMALL:参数及局部变量放入片内数据存储器(data)


COMPACT:参数及局部变量放入分页片外数据存储器(pdata)


LARGE: 参数及局部变量放入片外数据存储器(xdata)


 


点击看大图




KeilOption for Target ‘Target <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1’选项


 


51单片机外部程序存储器(ROM)和外部数据存储器(RAM)的总线扩展电路图



 

点击看大图 


 


参考资料:


18051单片机的存储器结构


group.ednchina.com/377/3646.aspx


2Keil 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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条