第68节:单片机C语言的多文件编程技巧
时间:11-22
来源:互联网
点击:
- 量的定义。
- */
- #ifndef _MAIN_ //标志变量_MAIN_是用它本身的文件名称命名
- #define _MAIN_ //标志变量_MAIN_是用它本身的文件名称命名
- void main();//这个是函数的声明
- #endif
- /* 注释二:
- 以上语句
- #ifndef
- #define
- 插入其它内容...
- #endif
- 类似于把_MAIN_看成是一个标志变量
- if(_MAIN_==0)// 相当于#ifndef _MAIN_
- {
- _MAIN_=1;// 相当于#define _MAIN_
- 插入其它内容...
- } //相当于#endif
- 目的是通过一个标志位变量的赋值,让编译器在编译的时候,只包含一次此头文件,避免多次包含出错
- */
- /*------分割线--------------------------------------------------*/
- /*以下是 main.c 的内容*/
- /* 注释一:
- 每个源文件都必须包含两个文件,一个是单片机的系统头文件REG52.H,
- 另外一个是它自己本身的头文件main.h.剩下其它的头文件看实际情况来
- 决定是否调用,我们用到了哪些文件的函数,全局变量或者宏定义,就需要调用对应的头文件。
- 每个源文件只做函数的定义和变量的定义,不做函数的声明和变量的声明。
- */
- #include "REG52.H"//必须包含的单片机系统头文件
- #include "main.h"//必须包含它本身的头文件
- /* 注释二:
- (1)由于本源文件中调用initial_myself()和initial_peripheral()函数,而这两个函数
- 都是在initial文件里定义和声明的,所以必须把initial.h也包含进来。
- (2)由于本源文件中调用delay_long(100)函数,而这个函数
- 是在delay文件里定义和声明的,所以必须把delay.h也包含进来。
- (2)由于本源文件中调用led_flicker()函数,而这个函数
- 是在led文件里定义和声明的,所以必须把led.h也包含进来。
- */
- #include "initial.h"//由于本源文件中用到了initial_myself()和initial_peripheral()函数,所以必须把initial.h也包含进来
- #include "delay.h"//由于本源文件中用到了delay_long(100)函数,所以必须把delay.h也包含进来
- #include "led.h"//由于本源文件中用到了led_flicker()函数,所以必须把led.h也包含进来
- void main()//这个是函数的定义
- {
- initial_myself();
- delay_long(100);
- initial_peripheral();
- while(1)
- {
- led_flicker();
- }
- }
- /*------分割线--------------------------------------------------*/
- /*以下是 delay.h 的内容*/
- #ifndef _DELAY_ //标志变量_DELAY_是用它本身的文件名称命名
- #define _DELAY_ //标志变量_DELAY_是用它本身的文件名称命名
- void delay_long(unsigned int uiDelaylong); //这个是函数的声明,每一个源文件里的函数都要在它的头文件里声明
- #endif
- /*------分割线--------------------------------------------------*/
- /*以下是 delay.c 的内容*/
- #include "REG52.H"//必须包含的单片机系统头文件
- #include "delay.h"//必须包含它本身的头文件
- void delay_long(unsigned int uiDelayLong)//这个是函数的定义
- {
- unsigned int i; //这个是局部变量的定义
- unsigned int j; //这个是局部变量的定义
- for(i=0;i
- {
- for(j=0;j<500;j++)
- {
- ;
- }
- }
- }
- /*------分割线--------------------------------------------------*/
- /*以下是 initial.h 的内容*/
- #ifndef _INITIAL_ //标志变量_INITIAL_是用它本身的文件名称命名
- #define _INITIAL_ //标志变量_INITIAL_是用它本身的文件名称命名
- void initial_myself(); //这个是函数声明,每一个源文件里的函数都要在它的头文件里声明
- void initial_peripheral(); //这个是函数声明,每一个源文件里的函数都要在它的头文件里声明
- #endif
- /*------分割线--------------------------------------------------*/
- /*以下是 initial.c 的内容*/
- #include "REG52.H"//必须包含的单片机系统头文件
- #include "initial.h"//必须包含它本身的头文件
- /* 注释一:
- 由于本源文件中用到了led_dr的语句,而led_dr是在led文件里宏定义的,所以必须把led.h也包含进来
- */
- #include "led.h"//由于本源文件中用到了led_dr的语句,所以必须把led.h也包含进来
- void initial_myself()//这个是函数定义
- {
- TMOD=0x01;//以下能直接用TMOD,TH0,TL0,EA,ET0,TR0这些寄存器关键字,是因为包含了REG52.H头文件
- TH0=0xf8;
- TL0=0x2f;
- led_dr=0;//led_dr是在led文件里定义和声明的
- }
- void initial_peripheral() //这个是函数定义
- {
- EA=1;
- ET0=1;
- TR0=1;
- }
- /*------分割线--------------------------------------------------*/
- /*以下是 interrupt.h 的内容*/
- #ifndef _INTERRUPT_ //标志变量_INTERRUPT_是用它本身的文件名称命名
- #define _INTERRUPT_ //标志变量_INTERRUPT_是用它本身的文件名称
单片机C语言文件编程技 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)