C51单片机存储类型及存储模式

时间:2023-03-11来源:佚名

1C51存储类型

对于在片外扩充的接口,可以根据硬件形成的地址,用#define语句进行定义,例如:

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

C51编译器支持80C51及其派生系列的体系结构,并提供对80C51所有存储区的访问。每个变量可以用表1中所列的存储器类型明确地分配到指定的存储空间。

1 C51存储类型与80C51存储空间的关系

数据类型

字节

值的范围

char

8

1

128127

unsigned char

8

1

0255

enum

16

2

3276832767

short

16

2

3276832767

unsigned short

16

2

065535

int

16

2

3276832767

unsigned int

16

2

065535

long

32

4

21474836482147483647

unsigned long

32

4

04294967295

float

32

4

±1.175494E-38~±3.402823E 38

bit

1

01

sbit

1

01

sfr

8

1

0255

sfr16

16

2

065535

对内部数据存储器的访问比对外部数据存储器的访问快许多,因此应当将频繁使用的变量放在内部数据存储器,而把较少使用的变量放在外部数据存储器中。

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

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的第三位的符号地址*/

bit数据类型可以用来访问用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模式。

    热销商品

    加厚abs安全帽电工建筑工地程施工领导监理透气防砸头盔可印字V型

    这款加厚ABS安全帽专为电工、建筑工地施工人员、领导及监理设计,采用高强度ABS工程塑料,抗冲击、防砸性能优异,有效保障头部安全。帽体加厚设计,增强耐用性与防护等级...
    5.8

    水口钳高硬度模型剪钳电子钳工业级口水剪斜嘴钳偏口斜口专用钳子

    水口钳高硬度模型剪钳是一款工业级精密工具,专为电子、模型制作及精细作业设计。采用优质高碳钢材质,经热处理工艺打造,具备卓越的硬度和耐磨性,可轻松剪切金属引脚、...
    4.8

    170电子剪钳II 如意斜口钳 工业斜嘴钳水口钳 模型剪塑胶钳尖嘴钳

    170电子剪钳II如意斜口钳是一款专业级精密工具,集工业斜嘴钳、水口钳、模型剪、塑胶钳与尖嘴钳功能于一体,适用于电子维修、模型制作、手工艺及精密作业。其采用优...
    4.5

    安全帽国标工地加厚施工领导透气安全头盔建筑工程监理免费印字

    本款安全帽严格遵循国家GB 2811-2019标准,专为建筑工程、工地施工及监理人员设计。采用高强度ABS工程塑料,加厚壳体有效抗冲击,保障头部安全。帽体轻盈透气,内置可调...
    10

    包邮三角型简易螺丝刀三角十字螺丝刀螺丝批改锥起子五金工具5mm

    这款5mm三角型简易螺丝刀,专为拧紧或拆卸三角形螺丝设计,适用于电子维修、家电维护及精密仪器装配等场景。采用优质合金钢材质,刀头硬度高、耐磨损,确保长久使用不变...
    3.64

    网站栏目