找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5523|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机变量存储详解

[复制链接]
跳转到指定楼层
楼主
变量的存储
变量的存储器类型是指该变量在 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)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表