新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > C51存储器类型与51单片机的物理区域

C51存储器类型与51单片机的物理区域

作者:时间:2013-06-08来源:网络收藏

小结一下:大家看到了以上的6种情况,其中效率最高的是第2种情况,既可以正确访问ram区又节约了代码,效率最差的是第 6种,但不是说大家只使用第2种方式就可以了,还要因情况而定,一般说来应用51系列的系统架构的内部ram资源都很紧张,最好大家在定义函数内部或程序段内部的局部变量使用内ram,而尽量不要把全局变量声明为内ram区中。所以对于全局指针变量我建议使用第3 种情况,而对于局部的指针变量使用第2种方式。

keil 存储区域分为程序存储区和数据存储区2大类型。

一.程序存储区(Pragram Area):

欲将声明的数据存放在程序存储区域,可以使用关键字“code”说明。

例 unsigned char code i=10;则表示 i为无符号字符型数据存放区域为程序存储区。

二.数据存储区(Data Memory):

数据存储区域分为内部数据存储区、外部数据存储区域和特殊功能寄存器寻址区。

1.内部数据存储区域(Internal Data Memory):可以使关键字"data、iadta、bdata"做相应说明。

data:直接寻址区,声明的数据存储范围为内部RAM低128字节 0X00~0X7F。

例 unsigned char data i=10;则表示 i为无符号字符型数据存放区域为数据存储区域(RAM)的低128字节范围内。

idata:间接寻址区,声明的数据存储范围为整个内部RAM区 0X00~0XFF。

例 unsigned char idata i=10;则表示 i为无符号字符型数据存放区域为数据存储区域(RAM)内。

bdata:可位寻址区,寻址范围为0X20~0X2F。

2.外部数据存储区(External Data Memory):可以使用关键字"pdata、xdata"进行说明。

pdata:主要用于紧凑模式,能访问1页(256字节)的外部RAM,即在访问使用,pdata定义的数据时,不会影响P2口的输出电平(在访问某些自身内部扩展的外部RAM时本身就不会影响I/O端口)。

例 unsigned char pdata i;则表示 i为无符号字符型数据存放区域为外部数据存储区域(RAM)内(只能在一页范围内)具体操作哪一页,可由其他i/o口设定。

xdata:可访问64k的外部数据存储区,地址范围0X0000~0XFFFF,同pdata一样在访问芯片自身内部扩展的RAM时也不会影响I/O端口。

例 unsigned char pdata i;则表示 i为无符号字符型数据存放区域为外部数据存储区(RAM)。

3.特殊功能寄存器寻址区域(Speciac Function Register Memory)-SFR:8051提供128字节的SFR寻址区,该区域可以字节寻址,字寻址,能被8整除的地址单元还可以位寻址。该区域用于控制定时器、计数器、串口等外围接口。使用时可用关键字“sfr、sfr16、sbit”做相应的声明。

例 字节寻址 sfr P0=0x80;为P0 口地址为80H,“=”后0X00~0XFF 之间的常数。

字寻址 sfr16 T2=0XCC;指定Timer2 口地址T2L=0XCC T2H=0XCD。

位寻址 sbit EA=0xAF;指定第0xAF 位为EA,即中断允许

存储模式

在使用时有时我们并没有明确指定所定义的数据的存储类型,然而依然正确。 这是由于存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域。

供有3种存储模式(存储模式在 编译器选项中选择):

1.Small模式

所有缺省变量参数均装入内部 RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。

2. Compact 模式

所有缺省变量均位于外部RAM区的一页(256Byte)。

3. Large 模式

所有缺省变量可放在多达 64KB 的外部RAM 区,优点是空间大,可存变量多,缺点是速度较慢。

C51有bit sbit data xdata bdata pdata sfr code等,可能不全面有遗漏

对应的物理存储器是:

bit,即位数据:数据存储器位寻址区,即20H~2FH的范围,共16个字节,16*8=128个位,位地址00h~7fh,连续的。

sbit:特殊功能寄存器中的位数据:只有能够被8整除的那些特殊功能寄存器中的各个位才能被称为sbit,位地址80H~FFH,不连续的,间断的。

data:数据区,对51为00H~7FH共128个字节,对52为00H~FFH,共256个字节,用MOV寻址,前128用直接寻址或寄存器(R0~R7)寻址,后128用R0、R1间接寻址。

xdata:外部数据区,0000H~FFFFH连续,用DPTR间接寻址(MOVX指令)

bdata:位寻址去的字节,20H~2FH

sfr:特殊功能寄存器(80H~FFH),直接寻址

pdata:外部数据区,P2口保持数据,用R0R1间接寻址(MOVX指令)

code:程序存储器,用MOVC指令只读


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭