C51程序设计完整.doc

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C51程序设计完整

C51数据类型与运算 C51数据类型 C51的数据类型如下所示: C51编译器支持的数据类型、长度和值域如下表1-1所示。 与面向数学运算的计算机相比,51单片机对变量类型或数据类型的选择更具有关键性意义。如果在程序设计中使用大量而不必要的变量类型,这会导致C编译器调用库函数的数量,以处理大量的变量类型和数据类型。所以必须特别慎重地进行变量和数据类型的选择。 表1-1 C51的数据类型 数据类型 长度(bit) 长度(Byte) 值域范围 bit unsigned char signed char unsigned int signed int unsigned long signed long float double 一般指针 1 8 8 16 16 32 32 32 64 24 — 1 1 2 2 4 4 4 8 3 0,1 0~255 -128~127 0~65535 -32768~32767 0~4 294 967 295 -2 147 483 648~2 147 483 647 ±1.176E-38~±3.40E+38(6位数字) ±1.176E-38~±3.40E+38(10位数字) 存储空间0~65535 C51数据存储类型 C51编译器还可以通过将变量、常量定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)的方法,将它们定义在不同的存储区中。 存储类型与51单片机实际存储空间的对应关系如表1-2所示。 表1-2 C51存储类型与51单片机实际存储空间的对应关系 存储类型 与存储空间的对应关系 data bdata idata pdata xdata code 直接寻址片内数据存储区,访问速度快(128B) 可位寻址片内数据存储区,允许位与字节混合访问(16B) 间接寻址片内数据存储区,可访问片内全部RAM地址空间(256B) 分页寻址片外数据存储区(256B),由MOVX @Ri访问 寻址片外数据存储区(64KB),由MOVX @DPTR访问 寻址代码存储区(64KB),由MOVC @DPTR访问 当使用存储类型data、bdata定义常量和变量时,C51编译器会将它们定位在片内数据存储区中。片内RAM是存放临时性传递变量或使用频率较高变量的理想场所。访问片内数据存储器(data、bdata、idata)比访问片外数据存储器(xdata、pdata)相对快一些,因此可将经常使用的变量置于片内数据存储器,而将规模较大的或不常使用的数据置于片外数据存储器中。 C51存储类型及其大小和值域如表1-3所示。例如: 表1-3 C51存储类型及其大小和值域 存储类型 长度(bit) 长度(Byte) 值域范围 data idata pdata xdata code 8 8 8 16 16 1 1 1 2 2 0~255 0~255 0~255 0~65 535 0~65 535 char data var1; /*字符变量var1被定义为data存储类型,定位在片内RAM中*/ bit bdata flags; /*位变量flags被定义为data存储类型,定位在片内RAM中的位寻址区*/ /*(20H~2FH)*/ float idata x,y,z; /*浮点变量x,y,z被定义为idata存储类型,定位在片内RAM中,并只能用间接寻址的方法进行访问*/ unsigned int pdata dimension; /*无符号整型变量dimension被定义为pdata存储类型,定位在片外RAM中,并用MOVX @Ri访问*/ unsigned char xdata vector[10][4][4]; /*无符号字符三维数组变量vector[10][4][4] 被定义为xdata存储类型,定位在片外RAM中,占据10×4×4=160个字节空间*/ 如果在变量定义时省略存储类型标志符,编译器会自动默认存储类型。默认的存储类型进一步由SMALL、COMPACT和LARGE存储模式指令限制,见表1-4所示。 存储模式决定了变量的默认存储类型、参数传递区和无明确存储类型的说明。例如,char var1在SMALL存储模式下,var1被定位在data存储区;在COMPACT模式下,var1被定位在表1-4 存储模式及说明 存储模式 说明 SMALL 参数及局部变量放入可直接寻址的片内存储器(最大128B,默认存储类型是data),因此访问十分方便。另外所有对象,包括栈,都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于不同函数的嵌套层数。 COMPACT 参数及局部变量放入分页片外存储区(最大256B,默认存储类型是pdata),通过寄存器R0和

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档