单片机的C51语言基础.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机的C51语言基础 ;51汇编语言能直接操作单片机的系统硬件,指令执行速度快。但其程序可读性差,且编写、移植困难。 ;C51是为51系列单片机设计的一种C语言,其优点:;相同之处: 语法规则、程序结构、编程方法 不同之处:;C51的程序结构 C51的数据结构 C51与汇编语言的混合编程 C51仿真开发环境 C51初步应用编程 ;① 程序由函数组成(一个主函数,或一个主函数和若干自定义函数); ② 利用预处理命令对变量或函数进行集中定义或说明; ③ 函数和变量都需遵循先定义后使用的基本原则; ④ 主函数中的所有语句执行完毕,则程序结束。 ;举例:LED闪烁控制功能;预处理命令---------;C51的程序结构 C51的数据结构 C51与汇编语言的混合编程 C51仿真开发环境 C51初步应用编程 ;1. C51的变量 ;【存储种类】 数据类型 【存储类型】 变量名;【存储种类】 数据类型 【存储类型】 变量名;数据的不同格式叫做数据类型 ;C51扩充数据类型:bit、sfr或sfr16、sbit ;sfr或sfr16型;例如,sfr P0 = 0x80; //定义P0口地址80H sfr PCON = 0x87; //定义PCON地址87H sfr16 DPTR=0x82; //定义DPTR的低端地址82H;sbit型; 1)将SFR的绝对位地址定义为位变量名     sbit bit_name = 位地址常数;     例如, sbit CY = 0xD7; ;C51编译器在头文件“REG51.H”中定义了全部sfr/sfr16和sbit变量。;应用举例:;【存储种类】 数据类型 【存储类型】 变量名;建立C51存储类型与存储空间的对应关系;C51的存储类型与存储空间对应关系表 ;三种编译模式分别对应于三种缺省存储类型:;;变量名可以由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,变量名长度随编译系统而定。 ;C51扩展的若干关键字一览表 ;unsigned char data system_status = 0; ;unsigned char bdata status_byte; ;; C51 中的头文件与C语言类似,区别在于包含文件中多了一组与MCS-51系列硬件相关的头文件,对MCS—51系列单片机的内部资源说明。 C51 中的头文件通常有: reg51.h或reg52.h: 定义特殊功能寄存器和位寄存器; math.h: 定义(声明)常用数学运算函数; ctype.h:定义字符判断转换库函数 stdio.h:定义输入输出流函数 stdlib.h:定义存储器分配函数 absacc.h:定义了8个宏,确定各存储空间的绝对地址 string.h:定义缓冲区处理函数 assert.h---定义宏,可以用来建立程序的测试条件函数 intins.h---包含指示编译器产生嵌入式固有代码的程序的原型函数 setjmp.h---定义jmp_buf类型和setjmp和longjmp程序的原型函数 stdarg.h---可变长度参数列表函数;Keil C51的库函数 C-51软件包的库包含标准的应用程序——可直接调用的库函数,调用这些库函数可以使程序代码简单、结构清晰、易于调试和维护。 每个函数都在相应的头文件(.h)中有原型声明。如果使用库函数,必须在源程序中用预编译指令定义与该函数相关的头文件(包含了该函数的原型声明)。例如: #include intrins.h ;定义本征库函数;Keil C51的库函数 C-51库函数可分为本征库函数和非本征函数。 本征库函数:是指在编译时直接将固定的代码插入当前行,而不是用ACALL或LCALL进行函数调用(类似于宏的处理),从而大大提高了访问效率。Keil C51的本征库函数只有9个,数量虽少,但非常有用。本征库函数在头文件intrins.h中定义。 非本征函数:并不是把固定代码插入当前行,而是通过ACALL或LCALL进行函数调用。;1. 本征库函数:9个 (1)_crol_和_cror_:将char型变量循环左/右移动指定位数后返回。 (2)_irol_和_iror_:将int型变量循环左/右/移动指定位数后返回。 (3)_lrol_和_lror_:将long型变量循环左/右/移动指定位数后返回。 (4)_nop_:相当于插入汇编指令NOP。 (5)_testbit_:相当于JBC指令。 (6)_chkfloat_:测试并

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档