80c51内部RAM空间分配

 

keil编译的时候,在开始时候会清零所有内存.在main之前,所以,只要复位,内存肯定是0
 

MCS-51单片机的内部数据存储器在物理上和逻辑上都分为两个地址空间,即:
数据存储器空间(低128单元),“用户可用的”;
特殊功能寄存器空间(高128单元);

这两个空间是相连的,从用户角度而言,低128单元才是真正的数据存储器。下面我们就来详细的与大家讲解一下:

低128单元:
   
片内数据存储器为8位地址,所以最大可寻址的范围为256个单元地址,对片外数据存储器采用间接寻址方式,R0R1DPTR都可以做为间接寻址寄存器,R0R18位的寄存器,即R0R1的寻址范围最大为256个单元,而DPTR16位地址指针,寻址范围就可达到64KB。也就是说在寻址片外数据存储器时,寻址范围超过了256B,就不能用R0R1做为间接寻址寄存器,而必须用DPTR寄存器做为间接寻址寄存器。

1、通用寄存器区(00H-1FH)
    
00H—1FH32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0—R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0—R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器——程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的D3和D4位(RS0RS1),即可选中这四组通用寄存器。程序中并不需要用4组,那么其余的可用做一般的数据缓冲器,CPU在复位后,选中第0组工作寄存器。

2、位寻址区(20H-2FH)
片内RAM20H—2FH单元为位寻址区,既可作单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节128个位,位地址为00H—7FH

CPU能直接寻址这些位,执行例如置“1”、清“0”、求、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。

3、用户RAM区(30H-7FH)
在片内RAM低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下的80个单元就是供用户使用的一般RAM区了,地址单元为30H-7FH。对这部份区域的使用不作任何规定和限制,但应说明的是,堆栈一般开辟在这个区域。

高128单元:(80H-FFH)
前面提到,在片内的RAM中,高128位是专用寄存器区,因这节比较重要,所以我们单独的安排一节课跟大家介绍。下节课我们就重点介绍51单片机片内RAM的高128位,即专用寄存器区

 

data:固定指前面0x00-0x7f128RAM,可以用acc直接读写的,速度最快,生成的代码也最小。

 

idata:固定指前面0x00-0xff256RAM,其中前128data128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式 访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:cidata做指针式的访问效果很好)

bdata:它只是说明你定义的变量储存在可位寻址区域

 

xdata:外部扩展RAM,一般指外部0x0000-0xffff空间,用DPTR访问。

 

pdata:外部扩展RAM的低256个字节

bit和sbit都是C51扩展的变量类型

bit位标量是C51编译器一种扩充数据类型,它的值是一个二进制位,不是0就是1

sbit 可定义可位寻址对象.如访问特殊功能寄存器中的某位

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值