第11章-C51的预处理+.ppt_第1页
第11章-C51的预处理+.ppt_第2页
第11章-C51的预处理+.ppt_第3页
第11章-C51的预处理+.ppt_第4页
第11章-C51的预处理+.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

21天学51单片机开发 第十一讲 C51的预处理 课程安排 预处理命令概述宏定义指令文件包含指令条件编译指令其他预处理指令 预处理命令概述 预处理命令 顾名思义 便是在程序编译和执行前首先执行的命令 预处理命令在功能上有点类似于单片机汇编语言的伪指令 C51语言中的预处理命令包括文件包含指令 宏定义指令 条件编译指令以及一些程序调试指令 预处理命令前要加一个 预处理命令 单片机C51语言中的预处理命令包括以下几个 define error include if else elif endif ifdef ifndef undef line pragma 分类 这里 按照功能来讲 define和 undef属于宏定义类指令 if else ifdef ifndef和 endif属于条件编译类指令 include属于文件包含类指令 line error和 pragma用于其他用途的预处理指令 宏定义指令 宏定义指令是采用用户自定义的标识符来代替一些符号 常量以及表达式等 C51语言的宏定义指令包括 define和 undef 具体可以分为如下几个 define指令带参数的 define指令 undef指令 define指令 define指令的使用格式如下 define标识符替换对象宏定义指令一般放在程序的开头 典型的宏定义指令示例如下 defineTURE1 defineFALSE0 definestrhello definePI3 14也就是说 如果在源代码中 遇到TURE就用 代替 FALSE就用0代替 str用hello 代替 PI就用3 14代替 宏定义指令的好处 在程序中使用宏定义指令的好处是 可以采用较短的字符串来代替较长的字符串 从而减少程序中字符串输入的工作量 可以提高程序的可移植性 便于整体修改一个程序中经常使用的常量或者字符串 方便了程序的调试和修改 宏定义可以表示数组的大小 这样便于程序的修改 示例如下 defineSIZE10intch SIZE 宏定义指令的注意事项 在程序中使用宏定义指令时 应注意以下几点 宏定义指令应该放到程序文件的开始处 宏定义指令后面不需要加分号 如果程序中宏定义指令较多 可将其放到独立的文件中 保存为 h文件 然后用 include指令来访问 宏名的定义需要满足C51标识符的命名规则 可以分为多行来书写 宏定义的宏名可以嵌套使用 带参数的 define指令 宏定义指令 define还可以带参数表 其一般形式如下 define标识符 参数表 替换对象带参数的宏定义和函数的作用很相似 undef指令 undef指令的一般形式如下 undef宏名 01 include 头文件02 definePI3 14159 宏定义PI 3 1415903 defineL R 2 PI R 带参数的宏定义 用于计算周长04 defineS R PI R R 带参数的宏定义 用于计算面积05voidmain 主函数06 07intr 08r 2 09printf r d L f n r L r 输出周长10printf r d S f n r S r 输出面积11 undefPI 取消宏定义12 undefL 取消宏定义13 undefS 取消宏定义14printf r d L f n r L r 输出周长15printf r d S f n r S r 输出面积16 文件包含指令 include指令的一般形式如下 include 头文件 h include include宏定义标识符一个 include命令只能包含一个文件 include命令末尾不需要分号 结束 两种使用区别 使用 include时 文件的包含可以采用两种方式 文件的包含采用双引号文件的包含采用尖括号 常用的头文件 absacc hasscert hctype hintrins hmath hreg51 hsetjmp hstdarg hstdlib hstdio hstring h 条件编译指令 条件编译指令提供了一种根据一定的条件来对程序中的语句段进行编译的功能 C51的条件编译指令有 if else ifdef ifndef endif 双分支条件编译指令 双分支条件编译指令的一般形式如下 if表达式语句段 else语句段 endif 注意 跟在 if后面的表达式必须仅含常量及已定义过的标识符 多分支条件编译指令 多分支条件编译指令的一般形式如下 if表达式0语句段 elif表达式1语句段 elif表达式2语句段 elif表达式3语句段 elif表达式n语句段 endif 宏名判断指令 宏名判断指令用于判断宏名是否被定义 包括 ifdef指令与 ifndef指令 ifdef宏名语句段 endif ifndef宏名语句段 endif line指令 line指令用于改变当前行的行号 也就是 LINE 的内容 其一般形式如下 line数字 01 include 头文件02voidmain 03 04 line100 初始化行计数器05printf LineNumber d n LINE 行号10006 error指令 error指令用来强制停止编译并输出错误信息 error指令使用的一般形式如下 error message 01 include 头文件02voidmain 主函数03 04 ifdefSCORE05if SCORE 90 如果宏SCORE存在 则执行该语句06printf VeryGood n 07elseif SCORE 80 08printf Good 09elseif SCORE 60 10printf Pass 11else12printf Lost 13 else14 error NoSCORE n 如果宏SCORE不存在 则执行该语句15 endif16 pragma指令 该指令提供了用户程序和编译器之间的交互 典型的 pragma指令示例如下 pragmasfr 在C51语言中使用SFR pragmaaccess 使用绝对地址 pragmaasm 在C51语言中插入汇编语句 01 include 头文件02voidmain 主函数03 04while 1 05 06P1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论