电工技术基础_电工基础知识_电工之家-电工学习网

欢迎来到电工学习网!

C51单片机存储类型及存储办法

2017-03-29 16:21分类:PLC基础知识 阅读:

 

1C51存储类型<XML:NAMESPACE PREFIX = O />

关于在片外拓展的接口,能够依据硬件构成的地址,用#define句子进行界说,例如:

#define unsigned char xdata adAddr_at_0x2000/*界说了片外接口地址为2000H*/

C51编译器支撑80C51及其派生系列的体系结构,并供应对80C51悉数存储区的拜访。每个变量能够用表1中所列的存储器类型明晰地分配到指定的存储空间。

1 C51存储类型与80C51存储空间的联络

数据类型

字节

值的方案

128127

255

3276832767

3276832767

65535

3276832767

65535

21474836482147483647

4294967295

±1.175494E-38~±3.402823E+38

1

1

255

65535

对内部数据存储器的拜访比对外部数据存储器的拜访快许多,因而应当将一再运用的变量放在内部数据存储器,而把较少运用的变量放在外部数据存储器中。

下面用实例阐明各种存储器变量的声明。

1)程序存储器变量:程序存储器的数据不能批改,通常将跳转向量或表格寄存在该区,存储器类型标识符为code

例如:unsigned char code text[] = “ENTER PARAMETER”

2)直接寻址内部数据存储器变量:可在一个机器周期直接寻址,因而将常用的变量放在data区。存储器类型标识符为data

例如:unsigned char data flag /*声明一个内部直接寻址的无符号字节变量*/

3)直接寻址内部数据存储器变量:用8位寄存器作为指针寻址内部存储器。存储器类型标识符为idata

例如:unsigned char idata buffer[8] /*声明一个内部直接寻址的无符号字节数组*/

4)位寻址内部数据存储器变量:是内部数据存储器的位寻址区,位变量对需求位操作的数据非常有用,其存储器类型标识符为bdata

留心:位寻址变量应声明为大局变量,不然编译将犯错。

例如:unsigned char bdata bStatue /*界说可位寻址的位变量,在片内RAM*/

sbit statue_0 = bStatue^0 /*界说位变量bStatue的第三位的符号地址*/

数据类型能够用来拜访用bdata存储器类型标识声明的变量的位。

外部数据存储器的声明与前面比方相似,这儿不再阐明。

假定变量声明中遗失存储器类型标识符,则主动挑选默许的存储器类型。默许的存储器类型运用到悉数大局变量、静态变量、函数自变量和不能分配寄存器的主动变量。默许的存储器类型取决于编译时的存储器办法。这都是纷歧样于通常C言语的本地。

2C51的存储器办法

存储器办法断定了用于函数自变量、主动变量和无明晰存储类型变量的默许存储器类型。可用编译器操控指令SmallCompactLarge指定编译时的存储器办法。用存储器类型标识符明晰声明一个变量,优先于默许存储器类型。

1Small办法

悉数变量默许坐落80C51内部数据存储器,这和运用data存储器类型标识符明晰声明是一样的。该办法变量拜访非常有用,但悉数数据方针和仓库有必要适宜内部RAM。因为运用的仓库空间抉择于纷歧样函数嵌套的深度,故对仓库的尺度恳求严峻。

2Compact办法

悉数变量默许坐落外部数据存储器的一页(256B)内,这和运用pdata存储器类型标识符明晰声明是一样的。地址高字节通常设置P2,编译器无法设置这个端口,故有必要在主张代码中手艺设置。该办法能包容最多256B的变量,这个束缚是用R0R1直接寻址构成的。该办法的功率不如Small办法的功率,变量拜访速度不如Small办法的快,但比Large办法快。

3Large办法

悉数变量默许坐落外部数据存储器,这和运用xdata存储器类型标识符明晰声明是一样的。寻址运用数据指针(DPRT),变量拜访功率低,格外是对多字节变量,该办法的数据拜访比Small办法和Compact办法生成的代码多。

通常常常运用Small办法,它可生成最快、最紧凑和最有用的代码。通常能够明晰指定变量的存储方位。仅当运用Small办法时不适宜运用或操作才上升到Compact办法和Large办法。

上一篇:单片机下载程序电路原理

下一篇:怎么学习单片机

相关推荐
返回顶部