单片机C51程序设计(补充)精品.pptVIP

  1. 1、本文档共93页,可阅读全部内容。
  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文档。上传文档
查看更多
单片机C51程序设计(补充)精品.ppt

单片机C语言程序设计 5.3.1????? Keil C语言 ?1、概述 Keil C语言的编译器及编译过程如图5-10所示。 图5-10 Keil C语言的编译器及编译过程 ? 在Keil C语言的软件包中,包含下列文件: ① C51编译器 Keil C51编译器是一个基于ANSI C标准的、针对80C51系列MCU的C编译器,生成的可执行代码快速、紧凑,在运行效率和速度上可以和汇编程序得到的代码相媲美。 ② A51宏汇编器 A51宏汇编器是一个8051系列MCU的宏汇编器,支持8051及其派生系列的全部指令集。它把汇编语言汇编成机器代码。本汇编器允许定义程序中的每一个指令,在需要极快的运行速度,很小的代码空间,精确的硬件控制时使用。本汇编器的宏特性让公共代码只需要开发一次,从而节约了开发和维护的时间。 A51汇编器将源程序汇编成可重定位的目标代码,并产生一个列表文件。其中可以包含也可不包含字符表及交叉参考信息。 ③ BL51连接/定位器 BL51连接/定位器是具有代码分段功能的连接/定位器,利用从库中提取的目标模块和由编译器或汇编器生成的一个或多个目标模块,处理外部和全局数据,并将可重定位的段分配到固定的地址上。所产生的一个绝对地址目标模块或文件包含不可重定位的代码和数据。所有的代码和数据被安置在固定的存储器单元中。此绝对地址目标文件可以用来: 。写入EPROM或其它存储器件。 。由uVision2调试器使用来模拟和调试。 。由仿真器用来测试程序。 ④ LIB51库管理器 LIB51库管理器让你建立和维护库文件。库文件是格式化的目标模块(由编译器或汇编器产生)的集合。库文件提供了一个方便的方法来组合和使用大量的连接程序可能用到的目标模块。 虽然Keil C51是一个兼容ANSI C的编译器,但为了支持80C51系列MCU还是加入了一些扩展的内容。C51编译器与ANSI C相比,扩展的内容包括:数据类型、存储器类型、存储模式、指针及函数(包括:定义函数的重入性、指定函数的寄存器组、指定函数的存储模式及定义中断服务程序)。 2、 Keil C对ANSI C的扩展 前已述及,本书的读者在前修课程中已经学过了通用的C语言课程,因此在这里将不再叙述有关C语言的一般内容,仅简要地描述Keil C51对ANSI C的扩展。 ?(1) 数据类型 Keil C51编译器支持的各种规格的数据类型列于表5-1。除了这些数据类型以外,变量可以组合成结构、联合及数组。 表5-1 Keil C51支持的数据类型 数据表5-1所列的数据类型中,bit、 sbit 、sfr 和sfr16 等四种类型在ANSI C中没有,是C51编译器中新增的。sbit、sfr和sfr16类型的数据是用于操作80C51的特殊功能寄存器的。 例如,下面的表达式: sfr P0 = 0x80; /* 定义 80C51 P0 口的特殊功能寄存器 */ 声明了一个变量P0,并且把它和位于0x80(80C51的P 0口)处的特殊功能寄存器联系在一起。 1) bit 类型 bit 数据类型可能在变量声明参数列表和函数返回值中有用。一个bit 变量的声明与其它数据类型相似,例如: bit done_flag=0; /* 位变量 */ bit testfunc(bit flag1, bit flag2); /* 位函数 */ 所有的 bit 变量放在80C51 内部存储区的位段。因为这个区域只有16 字节长,所以在某个范围内最多只能声明128个位变量。 bit 变量的声明中,应包含存储类型。但是因为 bit 变量存储在80C51的内部数据区,只能用data 和idata 存储类型,不能用别的存储类型。 bit 变量和 bit 声明有以下限制: 一个位不能被声明为一个指针, 例如: bit *ptr; /* 非法 */ 不能用一个 bit 类型的数组, 例如: bit ware[5] /* 非法 */ ? ·2 )sbit、sfr和sfr16数据类型 80C51 系列MCU用特殊功能寄存器SFR来控制计时器、计数器、串口、并口和外围设备。它们的可以用位、字节和字访问。与此对应,编译器提供 sbit、sfrs和fr16数据类型访问SFR。下面说明这些数据类型。 ⅰ. sfr 类型 sfr和C的其它变量一样声明。例如: sfr P0=0x80; /* P0口,地址为80h */ sfr P1=0x90; /* P1口,地

文档评论(0)

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

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

1亿VIP精品文档

相关文档