网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机原理与C51语言程序设计06.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 单片机原理与C51语言程序设计基础教程 重点内容: 程序设计及编程方法 Keil C51和A51接口编程基础 C与汇编语言混合编程实现 模块化程序设计 本章小结 第6章 C与汇编语言混合编程 一、程序设计及编程方法 无论是高级语言还是汇编语言,源程序都要转换成目标代码(机器语言)单片机才能执行。在Kell中程序的编译过程如图6.1所示。 C语言程序经过c51编译器、汇编语言程序经过汇编器编译后可以产生浮动地址目标程序,经过连接定位器生成十六进制的可执行文件。 1、单片机程序编制过程 一、程序设计及编程方法 单片机用c语言编程具有开发周期短、可读性强、可移植性好和修改方便等特点,但是对c语言进行汇编生成的汇编代码往往较长。直接用汇编语言编程虽然编写的程序较短,在直接对机器硬件进行控制方面具有相当的优势,但是开发周期长,修改也不方便。 较好的解决办法是程序的框架或主体部分用c语言编写,要求执行效率高的部分用汇编语言编写。这种混合编程的方法将c语言和汇编语言的优点结合起来,成为目前单片机开发最流行的编程方法。 2、混合编程的优势 二、Keil C51和A51接口编程基础 1.A51中的段 A51中的代码及数据分为不同的段,各段及功能如表6-1所示。 1、宏汇编器A51 二、Keil C51和A51接口编程基础 A51中保留了些关键字如表6-2所示。 1、宏汇编器A51 二、Keil C51和A51接口编程基础 2.A51中的伪指令 宏汇编器A51有一些伪指令,可以让我们定义符号值,预留和初始化内存,以及控制代码的位置。下面主要介绍在混合编程中会经常碰到的程序连接伪指令和段伪指令。 (1)程序连接伪指令 程序连接伪指令可以使我们通过允许模块间的引用和和模块的命名来实现各模块之间通信。 ①PUBLIC 伪指令 PUBLIC 列出将在其它目标模块中使用的符号。伪指令 PUBLIC 使指定符号在生成的目标模块中可用。这实际上就是把这些符号的名称公用化。伪指令 PUBLIC 的格式如下: PUBLIC 符号 PUBLIC指令后可以指定多个符号名,各个名字之间用逗号隔开。 例如: PUBLIC Timer0_Init //指定一个外部可以使用的函数名。 1、宏汇编器A51 二、Keil C51和A51接口编程基础 ②EXTERN/EXTRN EXTERN/EXTRN指令与PUBLIC指令对应,如果要使用其他模块中的符号,则必须用EXTERN/EXTRN指令进行说明。指令格式为: EXTRN class: type (symbol , symbol ...) EXTERN class: type (symbol , symbol ...) class是该符号被定义处的存储空间类型,可以是下列类型之一:BIT, CODE, CONST, DATA, EBIT, ECONST, EDATA, ECODE, HDATA, HCONST, IDATA, XDATA, 或 NUMBER (声明一个无类型符号);type是外部符号的符号类型,可以是下列类型之一:BYTE, WORD, DWORD, NEAR, FAR。symbol是一个外部符号名。 例如: EXTRN CODE (PUT_CRLF), DATA (BUFFER) EXTERN CODE (BINASC, ASCBIN) EXTRN NUMBER (TABLE_SIZE) EXTERN CODE:FAR (main) EXTRN EDATA:BYTE (VALUE, COUNT) EXTRN NCONST:DWORD (LIMIT) 通过以上指令说明后,本程序段中才可以访问外部变量。 1、宏汇编器A51 二、Keil C51和A51接口编程基础 ③NAME NAME指令用来标识当前模块。指令格式为:NAME 目标模块名 目标模块名最多可包含40个字符,此模块名与对应该模块的文件名无关,每个模块只能有一个模块名,如果源程序中没有给出模块名,则以不带扩展名的文件名做为模块名。 (2)段伪指令 一个段是一个代码或数据存储块,它根据汇编器从x51汇编源文件中的代码或数据创建。我们在源模块中怎样使用段,取决于我们的应用的复杂度。较小的应用需要较少的存储空间,一般比大型多模块应用的复杂度低。下面分别介绍。 ①RSEG(Relocatable Segment) RSEG为再定位段指令,用于选择一个已经在前面定义的再定位段做为当前段。 指令格式为: RSEG 段名 段名必须是在前面已经声明过了的可再定位段。 1、宏汇编器A51 二、Keil C51和A51接口编程基础 ②绝对段伪指令 绝对段伪指令为CSEG、D

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档