欢迎来到天天文库
浏览记录
ID:38831819
大小:335.32 KB
页数:22页
时间:2019-06-20
《C51的预处理命令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章C51的预处理命令和用户配置文件用户编写的C51程序代码只能控制程序的执行流程,若要对编译程序进行操作,就要用到预处理命令。在编译环境对源程序进行编译前,先对程序中的预处理命令进行处理,然后将处理结果和源程序一起进行编译。预处理命令通常只进行一些符号的处理,其并不执行具体的单片机硬件操作。C51语言中的预处理命令包括文件包含指令、宏定义指令和条件编译指令等,还有其他一些指令在程序调试时使用。本章将详细介绍各种常用的预处理命令的用法,同时还介绍了C51的用户配置文件相关的内容。8.1C51的预处理命令概述C51语言中提供了各种预处理命令,其作用
2、类似于汇编程序中的伪指令。一般来说,在对C51源程序进行编译前,编译器需要先对程序中的预处理命令进行处理,然后将预处理的结果和源代码一并进行编译,最后产生目标代码。预处理命令通常只进行一些符号的处理,其并不执行具体的硬件操作。为了与C51源代码中的程序语句相区别,预处理命令前要加一个“#”。C51语言中的预处理命令,如表所示。C51的预处理命令预处理命令用途#define用于宏定义#error用于程序调试#include用于文件包含#if用于条件编译#else用于条件编译#elif用于多种条件编译选择#endif用于条件编译#ifdef用于条件编译
3、#ifndef用于条件编译#undef用于宏定义#line用于更改行号#pragma用于传送控制指令8.2文件包含指令文件包含指令,即#include命令,通常位于C51源程序的开头,利用#include命令可以将其他的文件引入当前的C51源文件。其中被包含的文件通常是头文件、宏定义等。使用文件包含指令,有利于更好地调试C51源文件。当需要调试修改文件时,只要修改某一包含文件即可,而无需对所有文件进行修改。8.2.1#include命令在C51语言中,文件包含指令的一般形式如下:#include"头文件.h"#include<头文件.h>#incl
4、ude宏定义标识符其中,“#include”表示文件包含指令、双引号或尖括号括起来的文件名是要引入的源文件。典型的文件包含指令示例如下:#include"myfile.h"//引用自定义文件myfile#include//引用库函数文件studio#include//引用寄存器文件defineMATH_FILE"Ckeilincmath1.h"//宏定义自定义文件MATH_FILE#includeMATH_FILE//引用自定义文件MATH_FILE8.2.2C51常用的头文件在KeilμVision3集
5、成开发环境中,C51标准库提供了许多包含文件,即C51的头文件。这些文件存放在目录KeilC51INC文件夹及其子目录下。这些头文件包含常数、宏定义、类型定义和函数原型等。C51常用的头文件如下:absacc.h—包含允许直接访问8051不同存储区的宏定义。asscert.h—文件定义asscert宏,用来建立程序的测试条件。ctype.h—常用的字符转换和分类程序。intrins.h—文件包含指示编译器产生嵌入原有代码的程序的原型。math.h—常用数学程序。reg51.h—51系列单片机特殊寄存器。reg52.h—52系列单片机特殊寄存器。
6、setjmp.h—定义jmp_buf类型以及setjmp和longjmp程序的原型。stdarg.h—可变长度参数列表程序。stdlib.h—存储区分配程序。stdio.h—常用的输入和输出程序。string.h—常用的字符串操作程序和缓冲区操作程序。8.3宏定义指令宏定义指令是指用一些标识符作为宏名,来代替其他一些符号或者常量的预处理命令。使用宏定义指令,可以减少程序中字符串输入的工作量,而且可以提高程序的可移植性。宏名既可以是字符串或常数,也可以是带参数的宏。宏定义指令可分为带参数的宏定义和不带参数的宏定义。下面分别介绍用于宏定义的一些预处理命
7、令。8.3.1#define命令#define命令用于定义一个宏名。宏名是一个标识符,在源代码中遇到该标识符时,均以宏定义的串的内容代替该标识符。ANSI标准宏将定义的标识符称为“宏名”,而用定义的内容代替宏名的过程称为“宏替换”。#define命令用于定义宏名时,既可以带参数,也可以不带参数,下面分别介绍这两种情况。1.不带参数的宏定义2.带参数的宏定义8.3.2#undef命令#undef命令用于取消前面用#define命令定义过的宏名。一般形式为:#undef宏名其中,“#undef”是取消宏定义指令,“宏名”为前面用#define命令定义过
8、的标识符。使用#undef命令的目的是将宏名局限在指定的代码段中,这样可以限制宏定义的使用范围。使用#undef命令的程序
此文档下载收益归作者所有