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

单片机接口技术(C51版) 张道德 第十二章新.ppt

单片机接口技术(C51版) 张道德 第十二章新.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机接口技术(C51版) 第十二章Keil C51编译及连接技术 内容概述 主要介绍Keil C51的预处理方法如宏定义、常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现。 教学目标 1.了解Keil C51的预处理方法,主要有宏定义#define、常用的预处理指令#define、 #error、#if 、#else、#elif、#endif、#ifdef、#ifndef 、#undef 、#line 、#pragma 及文件包含指令#include。 2.了解small、compact、large三种编译模式信代码优化方法。 3. 掌握C51模块内部调用汇编程序的三种方法,理解C51模块与汇编模块之间的接口规则,主要有C51函数名与汇编程序名的转换规则、C51函数及其相关段的命名规则、C51函数的参数传递规则。 4.理解Keil C51的Bankswitch原理,了解Keil C51的三种分页方式、公共空间的概念,掌握BL51有关分页的配置,以PSD813F2为硬件基础,掌握Keil C51分页的实现过程,能进行分页的程序设计。 12.1 预处理器 12.1.1宏定义 宏定义格式如下: #define 名称 替换文字 宏是一种简单的替换,在程序中凡是出现“名称”之处均被“替换文字”替代,替换文字可以是数字,也可以是字符串。 12.1.2预处理指令 由ANSI C的标准规定, 预处理指令主要包括: ???? #define ???? #error ???? #if ???? #else ???? #elif ???? #endif ???? #ifdef ???? #ifndef ???? #undef ???? #line ???? #pragma #define 指令 例如: #define PI 3.1415926 凡是出现“PI”的地方均以“3.1415926”替换。 宏的出现有助于提高程序的可读性及书写方便性,也有助于程序的调试。 但是,出现在引号中的字符串是不能替换的。如 printf(“PI\n”); 该语句运行后输出的是: PI 而不是 3.1415926 define注意事项 1)在宏定义语名后没有“;”; 2)在C51程序中习惯上用大写字符作为宏替换名,常放在程序开头; 3)宏定义还有一个特点, 就是宏替换名可以带有形式参数,? 在程序中用到时, 实际参数会代替这些形式参数。 ??? 例如: ???? #define MAX(x, y) (xy)?x:y ???? main() ???? { ????????? int i=10, j=15; ????????? printf(The Maxmum is %d, MAX(i, j); ???? } ??? 上例宏定义语句的含义是用宏替换名MAX(x, y)代替x, y中较大者,? 同样也可定义: ???? #define MIN(x, y) (xy)?x:y ??? 表示用宏替换名MIN(x, y)代替x, y中较小者。 define注意事项 4)#define命令在程序之外,其有效范围为定义命令之后到源文件结束,但是可以用#undef命令终止宏定义的作用域。如: #define PI 3.1415926 void main(void) { …… } #undef PI PI的范围从#define 开始到#undef PI 结束 #if、#else、#endif指令 ??? #if、#els和#endif指令为条件编择指令, 它的一般形式为: ???? #if 常数表达式 ????????? 语句段; ???? #else ????????? 语句段; ???? #endif ??? 上述结构的含义是: 若#if指令后的常数表达式为真, 则编译#if到#else 之间的程序段; 否则编译#else到#endif之间的程序段。 ??? 例如: ???? #define MAX 200 ???? main() ???? { ????????? #if MAX999 ?????????????? printf(compiled for bigger\n); ????????? #else ?????????????? printf(compile

您可能关注的文档

文档评论(0)

精品课件 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档