51單片機的頭文件究竟該如何寫?
眾里尋他千百度,默然回首還是看不懂你的代碼!
我相信,對于初學(xué)單片機編程或其他語言編程的朋友來說,剛開始我們編程時總喜歡把所有的代碼都寫在一個文件中。
(當(dāng)然如果你是絕世天才那就另當(dāng)別論了,哈哈)。其實我也如此,剛開始我就想,將所有的代碼都寫在一個文件中那該多
方便,打開一個文件都可以看清。當(dāng)然,起初我們很容易看明白,因為你我都知道,咱寫的代碼只有那寥寥幾行,倒著背都
能背下來。但當(dāng)后來我們寫的代碼越來越多時,我們往往苦于閱讀自己的代碼。
因此,我們可以將一個程序?qū)懺诙鄠€文件中(即以.c為后綴的文件中)。這時聰明的你就會問了,那么我寫了了這么多文
件,最后只通過一個按鈕編譯,生成HEX這個家伙,那么各文件又是怎樣聯(lián)系一起的呢?(啊,說了這么多,終于說到點子
上了,ZC一下,看來我的語言表達能力的確得練練)這就是頭文件存在的價值呀!
好了,說重點。那么頭文件中都改裝些什么呢?簡單來說就是 預(yù)處理+引腳定義+函數(shù)名。再多的漢字也表達不了我的意
思,還是代碼說話吧。/****下面是一個關(guān)于GPS模塊的程序頭文件,文件名:GPS.h****/
#ifndef _GPS_H_
#define _GPS_H_ //_GPS_H_與文件名一致,只是改為大寫
#define uint unsigned int
#define uchar unsigned char
typedef struct{ //你知道結(jié)構(gòu)體是干啥的嗎?裝幾個變量
int month;
int year;
int data;
int hour;
int minute;
int second; //這幾個變量用來"裝"GPS接收到的時間
}dataTime;
..... //后面仍是一個結(jié)構(gòu)體,類似,所以我想偷一下懶用。。。代替
/******下面是一系列函數(shù)名,再GPS.C中編寫函數(shù)*******/
void gpsInit(void); //GPS初始化程序,gpsInit為函數(shù)名我比較喜歡用匈牙利/駝峰命名法,強 烈推薦
int gpsRmcParse(char *line, gpsInfo *gps); //RMC為接收到的數(shù)據(jù)頭
int gpsGgaParse(char *line, gpsInfo *gps);
int gpsGsvParse(char *line, gpsInfo *gps);
void integerToString(int x, char *str); //整型轉(zhuǎn)字符串
#endif //程序結(jié)束
上面就是這個頭文件,我們可以就看到它的格式就是這樣的
#ifndef ......
#define......
...
...
#endif
如果使用的什么模塊要接到I/O口,就在頭文件中寫
#include<reg51.h>
sbit ...
sbit ...
sbit ...
sbit ...
//等這樣的代碼,至于意思嘛,你當(dāng)然懂!
現(xiàn)在,頭文件寫完了,那么接下來的工作就簡單多了,將你的頭文件加載到所要使用該頭文件中內(nèi)容的C文件中。
編輯:admin 最后修改時間:2018-05-18