C-51程序设计内容摘要:

1、 1我 们 不 仅 提 供 产 品 , 更 提 供 技 术 与 服 务。 单片机电子研发室 据 类 型 长 度 值 域 字节 0 或 1 字节 127 字节 0255 字节 32867 字节 065535 字节 2147483647 字节 04294967295 字节 8指针 13 字节 对象地址 位 0 或 1 字节 0255 字节 065535编译的数据类型(如结构)包含上表所列的数据类型。 由于 8051系列是 8位机,因而不存在字节校准问题。 这意味着数据结构成员是顺序放置的。 数据类型的转换:当计算结果隐含着另外一种数据类型时,数据类型可以自动进行转换,例如,将一个位变量赋给一个整型变量时 2、,位型值自动转换为整型值,有符号变量的符号也能自动进行处理。 这些转换也可以用 . 2 数据类型的物理结构121 南销售服务中心2 型只有 1位,不允许有位指针和位数组。 位对象始终位于 8051 果程序控制流允许,位对象交迭。 122 针“型标量和基于存贮器的“针具有 1个字节长度(8。 123 针“型标量及指向 字节长度(16。 整型值(或偏移)0下面方式保存在内存中:地址: +0 +1内容: 04 型标量长为 4个字节(32 ,值 0址: +0 +1 +2 +3内容: 0 0 0 05 “一般”指针“一般”指针包括 3个字节:2 字节偏移和 1字节存贮器类型:地址: +0 +1 +2内容: 存 3、贮器类型 偏移高位 偏移低位第一个字节代表了指针的存贮器类型,存贮器类型编码如下:存贮器类型 1 2 3 4 5使用其它类型值可能导致不可预测的程序动作。 址: +0 +1 +2内容: 0 0 0须注意正确定义存贮器类型和偏移。 下例将值 0()00例中用其它常数索引或索引变量也起作用。 这样,各种存贮器类型的绝对地址可以一种非常有效的方式访问。 但有一个例外,即 意:绝对地址定义为“常量,低 16位包含偏移,高 8位表明了 了表示这种指针,必须用长整数来定义存贮器类型。 3户必须选择有实际意义的值。 126 型为 4个字节(32 位) ,使用的格式与 2 位)具有 24位精度,尾数的高位始终为“1” 4、,因而不保存,位的分布如下: 1位符号 8位指数位 23位尾数符号位是最高位,尾数为最低的位,内存中按字节存贮如下:地址: +0 +1 +2 +3内容: S:符号位,1=负,0=正E:指数(在两个字节中) ,偏移为 127M:23 位尾数,最高位“1”浮点值十六进制为 0按下面方式存贮:地址: +0 +1 +2 +3内容: 0 0 0 0外)的中断向量。 用户软件因此必须对错误条件作出适当反应。 下面推荐一种方法(也可以用其它可靠办法):“来保存浮点值,这个“须包括一个“一个“以根据 了通常浮点值外,准可能出错的条件以下面二进制值表示,为检查可能出现的计算错误,可在计算后进行检查。 因为当执行一个运 5、算时考虑了每个运算符的错误状态并且该状态被送到结果中。 是一个数+无穷(正溢出)无穷(负溢出)扩充定义131 特殊功能寄存器的声明列包括多种寄存器,其中一些具有特殊功能,如定时器,端口的控制寄存器等,为了能够直接访问这些寄存器,译器提供了一种定义的自主形式,这是必要的,因为这些定义与标准 了支持这些特殊功能寄存器(声明,引入了关键词“,语法如下:须注意的是“不是一个地址而是一个名字。 因此上例中名字 义为特殊功能寄存器并被赋予相应的绝对地址,名字可按意愿自由选取,源文件中不应有先定义的 =”号后的地址必须是常数,不允许带有运算符的表达式,这个常数表达式必须在特殊功能寄存器的地址范围内,位于 005 6、1系列寄存器数量和类型是极其不同的,因此建议将所有特别的“明放入一个头文件,头文件包括 8051一些系列成员中的 一步的定义可由用户用一文件编辑器产生。 132 对 6位数据访问在新的 8051系列产品中,功能上经常组合为 16位的,为了有效的访问这类用定义“,当“高端直接位于低端后时,对 如 8052的定时器 2就是这种情况,16 位声明的语法与“同,地址部分必须作为 : /*2L=02H=0*/本例中, 2 定义为16位 使在这种情况下,声明中的名字后仍不是赋值语句,而是一个 字节必须直接位于低字节之后,这种声明适用于所有新的 不能用于 33 殊功能位声明在典型的 8051应用问题中,经常需 7、要单独访问 51 扩充功能使之成为可能,特殊位,象 与标准 用保留字“访问位寻址对象。 与 保留字“明某些特殊位接受符号名, “=”后语句将绝对值地址赋给变量名,这种地址分配有三种方法:方法 1:须是已定义的 “”后的语句定义了基地址上的特殊位的位置,该位置必须是一个 07 的数。 例: ;方法 2:值必须在 0间,并能被 8整除,确定位的位置方法同上。 例: ; 5方法 3: 址必须位于 0间。 例: 殊功能位代表了一个独立的声明类,它不能与其它声明和位域互换。 134 标量声明除了通常的 51 编译器支持“据类型,对此有下列扩充与限制:(1) 函数可包含类型为“参数,也可将其作为返回值。 b0,*/;注:使用禁止中断(#包含明确的寄存器组切换(n)的函数不能返回位值,在这种情况下,编译器会识别出来并产生一个错误信息。 (2) 位标量声明的语法及 3) 对于位声明的限制 位不能声明为一个指针( 不存在位数组()位声明中允许定义存贮器类型,位都被放入一个位段,它总是在 8051内部 此存贮器类型限制为 明为其它存贮器类型都将导致编译出错。 135 可位寻址对象可位寻址对象指可以字节或位寻址的对象,当对象位于 51 允许带“型的对象放入可位寻址存贮器中。 /*位寻址指针 ; /*位寻址数组 使用“明可独立访问可位寻址对象的位:;5;7;7;对象。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。