KEIL 同一工程中的多文件處理
#ifndef _DELAY1S_H_
#define _DELAY1S_H_
void delay1s();//延時函數(shù)
#endif
再次,我們建立一個led_on.h,起代碼內(nèi)容如下:
#ifndef _LED_ON_H_
#define _LED_ON_H_
void led_on(void);//燈閃爍
#endif
作用同delay1s.h,不理解的話可以再看一下上面的解釋。
最后,將我們上面說的三個函數(shù)補(bǔ)充完整。
在led_on()函數(shù)中,我們用到了51單片機(jī)的一些寄存器的定義,所以我們要包含reg52.h,而且我們用到了delay1s()函數(shù),所以我們要包含delay1s.h,故led_on.c文件代碼如下:
#include
#include “delay1s.h” //注意這里沒有分號
void led_on(void)
{
P0=0x00;
delay1s();
P0=0xff;
delay1s();
}
Main函數(shù)的代碼形式如下:
#include
#include “delay1s.h”
#include “led_on.h”
void main()
{
led_on();
delay1s();
led_on();
}
在這個函數(shù)中,為了再次說明一下#ifndef……#define……#endif這個結(jié)構(gòu)的定義,大家可以把所有的.h文件中的這個結(jié)構(gòu)去掉,然后編譯一下看一下效果。
到這里相信大家對于這種模塊化的寫法就有大概的了解了,如果我們想添加新功能的時候,比如我們要添加一個流水燈的功能,那么,我們只需要增加一個led_circle.c和led_circle.h,然后按照上述步驟添加進(jìn)工程即可,程序的其他部分不需要任何改動。顯然這是很方便的。其實(shí)函數(shù)的聲明可以使用extern關(guān)鍵字,C語言中默認(rèn)都是這個類型的,所以可以不用寫。
評論