ji7411 发表于 2016-8-30 16:31

51单片机内部ram详解

51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C54、55、58、516等增加到1280字节。
单片机内部RAM,共256个单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。现在新出的51单片机都在内部扩展了外部RAM,通常的情况是256B+1024B的RAM组合,不过在芯片内部之所以还叫外部RAM是因为是用外部总线连接的,访问方式还是MOVX。
51单片机内部ram分配如下:
地址



0x80~0xff



高128字节,用于SFR




0x30~0x7f


数据缓冲区



0x20~0x2f

16个字节(28位)可位寻址bdata区
0x1f
第四组寄存器R0~R7

0x10~0x17
第三组寄存器R0~R7

0x08~0x0f
第二组寄存器R0~R7

0x00~0x07
第一组寄存器R0~R7


可位寻址bdata区unsigned char bdata test;                              sbit test0=test^0;就可以单独使用test的第0位数据缓冲区unsigned char data test;外部存储区A=XBYTE;从地址8100H读一个字节            B=*((char xdata *)0x0000);从地址0000H读一个字节

在keil->option->Target->MemoryMode中有三种存储器模式:small、compact、large。http://www.xjtudll.cn/upload/2012/6/201206201211273564.jpg
Small:变量存储在内部的RAM。Large:变量存储在外部RAM里。一般都使用small来存储变量,单片机优先把变量存储在内部RAM,如果内部RAM不够再到外部RAM里,而Large则先将变量存储到外部RAM。采用small方式,unsigned char xdata a;指定变量a存储在外部ram                        Unsigned char a;变量默认存储在内部ram里采用large方式,unsigned char xdata a;变量存储在外部ram                        Unsigned char a;变量默认存储在外部ram
页: [1]
查看完整版本: 51单片机内部ram详解