欢迎来到天天文库
浏览记录
ID:34539104
大小:100.11 KB
页数:39页
时间:2019-03-07
《c-51程序设计pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1FranklinC-511.1FranklinC-51数据类型FranklinC-51编译器支持下列数据类型:数据类型长度值域bit1字节0或1signedchar1字节-128~+127unsignedchar1字节0~255signedint2字节-32768~+32867unsignedint2字节0~65535signedlong4字节-2147483648~+2147483647unsignedlong4字节0~4294967295float4字节±1.176E-38~±3.40E+38指针1~3字节对象地址sb
2、it1位0或1sfr1字节0~255sfr162字节0~65535编译的数据类型(如结构)包含上表所列的数据类型。由于8051系列是8位机,因而不存在字节校准问题。这意味着数据结构成员是顺序放置的。数据类型的转换:当计算结果隐含着另外一种数据类型时,数据类型可以自动进行转换,例如,将一个位变量赋给一个整型变量时,位型值自动转换为整型值,有符号变量的符号也能自动进行处理。这些转换也可以用C语言的标准指令进行人工转换。1.2数据类型的物理结构1.2.1bit“bit”类型只有1位,不允许有位指针和位数组。位对象始终位于8051C
3、PU的可寻址RAM空间。如果程序控制流允许,L51将位对象交迭。1.2.2signed/unsignedchar;data/idata/pdata指针“char”类型标量和基于存贮器的“data/idata/pdata”指针具有1个字节长度(8bits)。1.2.3signed/unsignedint/short;xdata/code指针“int”和“short”类型标量及指向xdata/code区域的指针具有2字节长度(16bits)。整型值(或偏移)0x1234以下面方式保存在内存中:地址:+0+1内容:0x120x34
4、C-51程序设计11.2.4signed/unsignedlong“long”类型标量长为4个字节(32bits),值0x12345678以下面方式放置:地址:+0+1+2+3内容:0x120x340x560x781.2.5“一般”指针“一般”指针包括3个字节:2字节偏移和1字节存贮器类型:地址:+0+1+2内容:存贮器类型偏移高位偏移低位第一个字节代表了指针的存贮器类型,存贮器类型编码如下:存贮器类型IDATAXDATAPDATADATACODE值12345使用其它类型值可能导致不可预测的程序动作。XDATA类型的0x12
5、34地址作为指针表示如下:地址:+0+1+2内容:0x020x120x34当用常数作指针时,必须注意正确定义存贮器类型和偏移。下例将值0x41写入绝对地址为0x8000的外部数据存贮器:#defineXBYTE((char*)0x20000L)XBYTE[0x8000]=0x41;上例中用其它常数索引或索引变量也起作用。这样,各种存贮器类型的绝对地址可以一种非常有效的方式访问。但有一个例外,即SFR。注意:绝对地址定义为“long”型常量,低16位包含偏移,高8位表明了xdata类型。为了表示这种指针,必须用长整数来定义存贮
6、器类型。C51编译器不检查指针常数,用户必须选择有实际意义的值。1.2.6float“float”类型为4个字节(32位),使用的格式与IEEE-754标准(32位)具有24位精度,尾数的高位始终为“1”,因而不保存,位的分布如下:?1位符号?8位指数位?23位尾数符号位是最高位,尾数为最低的位,内存中按字节存贮如下:地址:+0+1+2+3内容:MMMMMMMMMMMMMMMMEMMMMMMMSEEEEEEE其中:S:符号位,1=负,0=正2C-51程序设计E:指数(在两个字节中),偏移为127M:23位尾数,最高位“1”浮
7、点值——12.5的十六进制为0xC1480000,它按下面方式存贮:地址:+0+1+2+3内容:0x000x000x480xc18051不包括捕获浮点错误(例外)的中断向量。用户软件因此必须对错误条件作出适当反应。下面推荐一种方法(也可以用其它可靠办法):“union”用来保存浮点值,这个“union”必须包括一个“float”和一个“unsignedlong”,以根据IEEE对错误作出响应。除了通常浮点值外,IEEE标准可能出错的条件以下面二进制值表示,为检查可能出现的计算错误,可在计算后进行检查。因为当执行一个运算时考虑
8、了每个运算符的错误状态并且该状态被送到结果中。NaN0xFFFFFFF不是一个数+INF0x7F80000正无穷(正溢出)-INF0XFF80000负无穷(负溢出)1.3C-51的扩充定义1.3.1特殊功能寄存器的声明MSC-51系列包括多种寄存器,其中一些具有特殊功能,如定时器,端口的控
此文档下载收益归作者所有