变量的存储
变量的存储器类型是指该变量在 8051 单片机硬件系统中所使用的存储区域,并在编译时准确的定位。定义变量时应指定变量的存储器类型,在编译时将根据指定类型定义到相应的存储区。
存储器类型 说明
data 直接访问内部数据存储器(128 字节),访问速度最快
bdata 可位寻址内部数据存储器(16 字节),允许位与字节混合访问
idata
间接访问内部数据存储器(256 字节),对于 51 子系列,只允许访问
低128B,对于52 子系列,允许访问全部256B地址
pdata 分页访问外部数据存储器(256 字节),相当于用MOVX @Ri 指令访问
xdata 外部数据存储器(64KB),相当于用MOVX @DPTR 指令访问
code 程序存储器(64KB),相当于用MOVC @A+DPTR 指令访问
例:数据类型 存储类型 变量
char data var1;
bit bdata flags;
unsigned char xdata vextor;
unsigned char code seg[2];
unsigned int data number;
位寻址区及位变量定义
C51 提供一个bdata的存储器类型,用于访问单片机的可位寻址区的数据
unsigned char bdata age; //在位寻址区定义 unsigned char类型的变量age
int bdata score[2]; //在可位寻址区定义数组score[2]
bit flag=age^7 //用bit 定义位变量来独立访问可寻址位对象的其中一位
C51 提供关键字“bit”实现位变量的定义及访问。
bit flag; // 将flag 定义为位变量
bit valve_state; // 将valve_state定义为位变量
通常C51 编译器会将位变量分配在位寻址区的某一位。
位变量不能定义成一个指针,如不能定义:bit * POINTER。
不能定义位数组,如不能定义: bit array[2]。
bit 与sbit 的不同。bit 不能指定位变量的绝对地址,当需要指定位变量的绝对地址(范围必须在0x80-0xff)时,需要使用sbit 来定义。
例:sbit flag=P1^0;
完整的pdf格式文档51黑下载地址:
51单片机中变量的存储.pdf
(270.52 KB, 下载次数: 31)
|