1、一般情况下,对C语言程序进行编译时,所有的程序都要参加编译,但有时候,对于有些内容,只希望在相关条件满足时才对其进行编译,这就要用到条件编译。条件编译可以选择不同的范围,从而在编译后产生不同的代码。
2、C51的条件编译指令也属于预处理指令的一种,主要要有下三种形式:
1)#ifdef 标识符
程序段1
#else
程序段2
#endif
功能:如果指定的标识符已被定义,则编译程序段1,不编译程序段2,否则则不编译程序段1,直接编译程序段2
2)
#if 常量表达式
程序段1
#else
程序段2
#endif
说明:如果常量表达式为“真”则编译程序段1,否则编译程序段2
3)
#ifndef 标识符
程序段1
#else
程序段2
#endif
说明:该指令跟第一种编译命令的作用刚好相反,如果标识符没有被定义,则编译程序段1,否则编译程序段2.
3、本实例利用条件编译指令来控制P0口的8位LED的点亮状态,以学习条件编译指令的使用方法。实现效果是:当要求条件满足时,P0口的低四位LED点亮,不满足时,高四位LED点亮。
4、在proteus中绘制电路原理图,本实例中,我们仍然使用前面介绍的P0口控制8位LED流水灯的电路图。
5、创建一个新的keil c51工程ex5.c,编写如下的程序,编译并生成ex5.hex文件
#include <reg51.h>
#define MAX 100
void main(void)
{
#if MAX>80
P3=0xf0;
#else
P3=0x0f;
#endif
while(1);
}
6、在proteus中绘制好电路原理图后,将ex5.hex文件装载到at89c51中,启动仿真,即可看到P3口的低四位LED被点亮了。表明程序段P3=0XF0被编译了,而P3=0x0x没有被编译。