- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 C51的预处理命令和用户配置文件 用户编写的C51程序代码只能控制程序的执行流程,若要对编译程序进行操作,就要用到预处理命令。在编译环境对源程序进行编译前,先对程序中的预处理命令进行处理,然后将处理结果和源程序一起进行编译。 预处理命令通常只进行一些符号的处理,其并不执行具体的单片机硬件操作。C51语言中的预处理命令包括文件包含指令、宏定义指令和条件编译指令等,还有其他一些指令在程序调试时使用。本章将详细介绍各种常用的预处理命令的用法,同时还介绍了C51的用户配置文件相关的内容。 8.1 C51的预处理命令概述 C51语言中提供了各种预处理命令,其作用类似于汇编程序中的伪指令。一般来说,在对C51源程序进行编译前,编译器需要先对程序中的预处理命令进行处理,然后将预处理的结果和源代码一并进行编译,最后产生目标代码。预处理命令通常只进行一些符号的处理,其并不执行具体的硬件操作。 为了与C51源代码中的程序语句相区别,预处理命令前要加一个“#”。C51语言中的预处理命令,如表所示。 8.2 文件包含指令 文件包含指令,即#include命令,通常位于C51源程序的开头,利用#include命令可以将其他的文件引入当前的C51源文件。其中被包含的文件通常是头文件、宏定义等。使用文件包含指令,有利于更好地调试C51源文件。当需要调试修改文件时,只要修改某一包含文件即可,而无需对所有文件进行修改。 8.2.1 #include命令 在C51语言中,文件包含指令的一般形式如下: #include 头文件.h #include 头文件.h #include 宏定义标识符 其中,“#include”表示文件包含指令、双引号或尖括号括起来的文件名是要引入的源文件。典型的文件包含指令示例如下: #include myfile.h //引用自定义文件myfile #include studio.h //引用库函数文件studio #include reg51.h //引用寄存器文件 define MATH_FILE C\keil\inc\math1.h //宏定义自定义文件MATH_FILE #include MATH_FILE //引用自定义文件MATH_FILE 8.2.2 C51常用的头文件 在Keil μVision3集成开发环境中,C51标准库提供了许多包含文件,即C51的头文件。这些文件存放在目录Keil\C51\INC文件夹及其子目录下。这些头文件包含常数、宏定义、类型定义和函数原型等。C51常用的头文件如下: absacc.h—包含允许直接访问8051不同存储区的宏定义。 asscert.h—文件定义asscert宏,用来建立程序的测试条件。 ctype.h—常用的字符转换和分类程序。 intrins.h—文件包含指示编译器产生嵌入原有代码的程序的原型。 math.h—常用数学程序。 reg51.h—51系列单片机特殊寄存器。 reg52.h—52系列单片机特殊寄存器。 setjmp.h—定义jmp_buf类型以及setjmp和longjmp程序的原型。 stdarg.h—可变长度参数列表程序。 stdlib.h—存储区分配程序。 stdio.h—常用的输入和输出程序。 string.h—常用的字符串操作程序和缓冲区操作程序。 8.3 宏定义指令 宏定义指令是指用一些标识符作为宏名,来代替其他一些符号或者常量的预处理命令。使用宏定义指令,可以减少程序中字符串输入的工作量,而且可以提高程序的可移植性。 宏名既可以是字符串或常数,也可以是带参数的宏。宏定义指令可分为带参数的宏定义和不带参数的宏定义。下面分别介绍用于宏定义的一些预处理命令。 8.3.1 #define命令 #define命令用于定义一个宏名。宏名是一个标识符,在源代码中遇到该标识符时,均以宏定义的串的内容代替该标识符。ANSI标准宏将定义的标识符称为“宏名”,而用定义的内容代替宏名的过程称为“宏替换”。#define命令用于定义宏名时,既可以带参数,也可以不带参数,下面分别介绍这两种情况。 1.不带参数的宏定义 2.带参数的宏定义 8.3.2 #undef命令 #undef命令用于取消前面用#define命令定义过的宏名。一般形式为: #undef 宏名 其中,“#undef”是取消宏定义指令,“宏名”为前面用#define命令定义过的标识符。 使用#undef命令的目的是将宏名局限在指定的代码段中,这样可以限制宏定义的使用范围。使用#undef命令的程序示例如下: #include stdio.h //头文件 #define COUNT 50 //宏定义 ? void
您可能关注的文档
- 第6章 电子政务的业务流程.ppt
- 第6章 三人博弈.ppt
- 第6章 实际气体性质及热力学一般关系式 工程热力学(第四版)课件.ppt
- 第6章 顺序控制梯形图的编程方法.ppt
- 第6章 项目投资管理.ppt
- 第6章C语言和汇编语言混合编程C55x DSP.ppt
- 第6章核酸数据分析.ppt
- 第6章红外吸收光谱分析.ppt
- 第6章社会主义初级阶段理论课件.ppt
- 第7讲 公示语和翻译中的文化 汉英翻译 教学课件.ppt
- DB44_T 2611-2025 城市排水管网有毒有害气体监测与风险分级管理技术标准.pdf
- DB44_T 2612-2025 竞赛类科普活动策划与实施服务规范.pdf
- DB43_T 2947-2024 烟草种子质量控制规程.pdf
- DB37_T 4836-2025 煤矿风量实时监测技术要求.pdf
- 叉车防撞系统,全球前22强生产商排名及市场份额(by QYResearch).docx
- 超滤膜,全球前18强生产商排名及市场份额(by QYResearch).docx
- DB62T 4172-2020 玉米品种 酒623规范.pdf
- DB62T 4160-2020 在用真空绝热深冷压力容器综合性能在线检测方法.pdf
- DB62T 4164-2020 辣椒品种 酒椒1号.pdf
- DB62T 4133-2020 公路隧道地质超前预报机械能无损探测技术规程.pdf
最近下载
- 2024年上半年教师资格证考试《初中语文》真题.docx
- 耳鼻喉科考试题及答案.docx VIP
- 超星尔雅学习通《组织行为学》章节测试答案满分版.doc
- 高中数学椭圆、双曲线抛物线综合练习题及答案-.pdf VIP
- 2024 巡察整改专题民主生活会个人对照检查材料.docx VIP
- 2024年上半年教师资格证考试《初中语文》真题.pdf
- 基于Modbus总线的马铃薯贮藏库温湿度采集.doc VIP
- 2025年全国保密教育线上培训考试试题库及完整答案【全优】.docx VIP
- 2024年上半年教师资格证考试《教育知识与能力》(中学)真题.pdf
- 晓磊(CHXL)Lei3000变频器说明书用户手册.pdf
文档评论(0)