单片机实用技术 教学课件 作者 陶春鸣 09.pptVIP

单片机实用技术 教学课件 作者 陶春鸣 09.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 C51编译器的常用语法介绍 C51编译器除了支持ANSI C 标准的关键字外,还扩展了如下关键字。 9.2 数据与数据类型 C51编译器具体支持的数据类型 unsigned char 8 1 0~255 Signed char 8 1 ?128~+127 unsigned int 16 2 0~65536 signed int 16 2 ?32768~32767 Unsigned Long 32 4 0~4294967295 signed long 32 4 ?2147483648~2147483647 Float 32 4 ±1.175494E-38~±3.402823E+38 * 1~3 对象的地址 Bit1 1 0或1 Sfr2 8 1 0~255 Sfr163 16 2 0~65536 sbit4 1 0或1 9.3 C51编译器中变量定义的格式 9.4 C语言源程序中直接对8051的特殊功能寄存器的定义 sfr 特殊功能寄存器名 = 地址常数 (1)sfr后面必须跟一个标识符作为寄存器名,名字可任意选取,但应符合一般习惯。 (2)等号后面必须是常数,不允许有带运算符的表达式,而该常数必须在SFR的地址范围之内(0x80~0xff)。 (3)新一带8051单片机,SFR经常组合成16位来使用,采用关键字sfr16来定义。 9.5 C语言源程序中直接对8051的SFR中可位寻址单元的位的定义 方法1:sbit 位变量名 = 位地址 该方法将位的绝对地址赋给位变量,位地址必须位于0x80~0xff。 方法2:sbit 位变量名=特殊功能寄存器名^位位置 当可寻址位位于SFR时,可采用这种方法。特殊功能寄存器名必须是已定义的SFR的名字。“位位置”是一个0~7的常数。 方法3:sbit 位变量名=字节地址^位位置 以一个整常数作为基地址,该值必须为0x80~0xff。“位位置”是一个0~7的常数。 当位对象位于8051片内RAM中的可位寻址区时,称为“可位寻址对象”。C51编译器提供了一个bdata存储器类型,允许将具有bdata类型的对象放入8051片内可位寻址区。 int bdata ibase; //在位寻址区定义一个整型变量ibase char bdata bary[4];//在位寻址区定义一个数组bary[4] 9.7 关键字bit与sbit区别 sbit是一个独立的关键字。bit是C51编译器的一种扩充数据类型,用于定义一个普通位变量,它的值是二进制数的0或1。 一个函数中可包含bit类型的参数,函数的返回值也可以为bit类型。 因为8051无专用I/O指令,其口地址与外RAM地址是统一编址的,即把一个口当做外部RAM中的一个单元来看待,其访问方法同访问外部RAM单元一样。 8051片内I/O口与片外扩展I/O可统一在头文件中定义,也可以在程序中(一般在开始的位置)进行定义, 9.9 C51编译器提供的3种访问绝对地址的方法 在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括CBYTE,XBYTE,PWORD,DBYTE,CWORD,XWORD,PBYTE,DWORD。 使用_at_关键字时直接在数据定义后加上_at_const即可。 #define rval CBYTE[0x0002] //指向程序存储器的0002H地址 #define rval XBYTE[0x0002] //指向外RAM的0004H地址 C51编译器采用一个扩展关键字reentrant作为定义函数时的选项,需要将一个函数定义为再入函数时,只要在函数名后加上关键字reentrant即可: 函数类型 函数名(形式参数表) [reentrant

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档