模块化编程
- 传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路
- 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等
模块化编程框图
模块化编程注意事项
- 模块化.c文件:函数、变量的定义
- XX.h文件:可被外部调用的函数、变量声明
- 任何自定义的函数、变量在调用前必须有定义或者声明(同一个.c)
- 使用到的自定义函数的.c文件必须添加到工程参与编译
- 使用到的.h文件必须放在编译器可寻找到的文件夹
根目录:
自定义位置:
C语言预编译
**预编译:C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)
**
Keil5中文字体乱码解决问题
模块化编程步骤
- Dealy.c
void Delay(unsigned int xms) //延时函数
{
unsigned char i, j;
while(xms--)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
2.Delay.h
//#include <REGX52.H>
#ifndef __DELAY_H__
#define __DELAY_H__
void Delay(unsigned int xms);//函数声明
#endif
3.NixieTube.c
#include <REGX52.H>
#include "Delay.h" //此处引用头文件
unsigned char NixieTubeTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //段码(阳码)
void NixieTube(unsigned char location,unsigned char Number)
{
switch(location)
{
case 1:P2_4=1,P2_3=1,P2_2=1;break;//138????????1
case 2:P2_4=1,P2_3=1,P2_2=0;break;
case 3:P2_4=1,P2_3=0,P2_2=1;break;
case 4:P2_4=1,P2_3=0,P2_2=0;break;
case 5:P2_4=0,P2_3=1,P2_2=1;break;
case 6:P2_4=0,P2_3=1,P2_2=0;break;
case 7:P2_4=0,P2_3=0,P2_2=1;break;
case 8:P2_4=0,P2_3=0,P2_2=0;break;//138????????8
}
P0=NixieTubeTable[Number];
Delay(2); //调用延时函数
P0=0x00;
}
- NixieTube.h
#ifndef __NIXIETUBE_H__
#define __NIXIETUBE_H__
void NixieTube(unsigned char location,unsigned char Number);
#endif
- XX.h