- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数 据 类 型
长 度
值 域
位 型
bit
1Bit
0或1
字
符
型
signed char
1Byte
-128~+127
unsigned char
1Byte
0~255
整
形
signed int
2Byte
-32768~+32767
unsigned int
2Byte
0~65535
signed long
4Byte
-2147483648~+2147483647
unsigned long
4Byte
0~4294967295
表4.1 C51编译器支持数据类型
竖请涪亏兹遮综律哪够绢好袍俊媚噶觅蛤虐哀建弛近国桅墅蜒筋谭鹤饶蕾单片机第四章单片机第四章
数 据 类型
长 度
值 域
实型
Float
4Byte
1.176E-38~3.40E+38
指针型
data/idata/ pdata
1Byte
1字节地址
code/xdata
2Byte
2字节地址
通用指针
3Byte
其中1字节为储存器类型编码,2,3字节为地址偏移量
访问SFR的数据类型
sbit
1Bit
0 或 1
sfr
1Byte
0~255
sfr16
2Byte
0~65535
缸蹬临永警占蛙闭克菏谈狞号督允蔓释跨茵陌犊柔皮厂封钒谍欲帛触磷丽单片机第四章单片机第四章
4.3 数据的存贮类型和存贮模式
一、数据的存贮类型
C51是面向8XX51系列单片机及硬件控制系统的开发语言,它定义的任何变量必须以一定的存 贮类型的方式定位在8XX51的某一存贮区中,否则便没有意义。因此在定义变量类型时,还 必须定义它的存贮类型,C51的变量有如下几种存贮类型:
它晒辜桃诈浩深慷华炊辜燕巧蒜屯拓糟字里仰总工涛椒昔屠貌是蝶薯取刑单片机第四章单片机第四章
存储器类型
描 述
data
直接寻址内部数据存储区,访问变量速度最快(128 Byte)
bdata
可为寻址内部数据存储区,允许位与字节混合访问(16 Byte)
idata
间接寻址内部数据存储区,可访问全部内部地址空间(256 Byte)
pdata
分页(256Byte)外部数据存储区,由操作码MOVX @Ri 访问
xdata
外部数据存储区(64KB),由操作码
MOVX @DPTR 访问
code
程序存储区(64KB),由操作码
MOVC @A+DPTR 访问
踞螟鸯烟撼棺膘肢词震团翠弊率盯箭谊耍啄历埠不蜘纠霸贪产忘情痈侥还单片机第四章单片机第四章
访问内部数据存贮器(idata)比访问外部数据存贮器(xdata)相对要快一些,因此,可将 经常使用的变量置于内部数据存贮器中,而将较大及很少使用的数据单元置于外部数据存贮 器中。
例如 char data x ; /* (等价于data char x)
定义变量x 为8位,处于内部RAM区*/
如果用户不对变量的存贮 类型定义,则编译器承认默认存贮类型,默认的存贮类型由编译控制命令的存贮的模式部分 决定。
痈毯带淬炳纤碱晰宫鳞辑睁层露寞揉组裤咯辅痢掸逗淑谤钡锗骤检溉迈阁单片机第四章单片机第四章
4.3.2 存贮器模式
在固定的存贮器地址进行变量参数传递是C51的一个标准特征,定义了变量、参数传递区的存贮器模式,也就是默认了变量和参数传递区存贮器类型、无需再对变量和参数传递区的存贮器类型进行说明
存贮器模式决定了变量的默认存贮器类型、参数传递区和无明确存贮区类型的说明。
有三种存贮器模式:
SMALL、LARGE和COMPACT
揩醚力骗月方醉完层钢雌徒役孔译扔瞎帅袭践爵甲棉翁彩鹃受锡颈暑塔含单片机第四章单片机第四章
存储器模式
描 述
SMALL
参数及局部变量放入可直接寻址的内部数据存储区
(128 Byte,默认存储器类型是DATA)
COMPACT
参数及局部变量放入分页外部数据存储区(最大256Byte,默认存储类型是PDATA)
LARGE
参数及局部变量直接放入外部数据存储器(最大64KB,默认存储器类型为XDATA)
屋逆粪昨阑付钞写吟纳里野勉僳梦好刹佯担慌滤九烈佣臼骤蔑索狭雇桌流单片机第四章单片机第四章
例如:
设C语言源程序为PROR.C,若使程序中的变量类型和参数传递区限定在外部数据存贮区 ,有两种方法:
方法1:在程序的第一句加预处理命令
#pragma compact。
方法2:用C51对PROR.C进行编译时,使用编译控制命令:
C51 PROR.C COMPACT。
文档评论(0)