EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的头文件究竟该如何写?
. D; m6 H6 q( B# F/ _) R. q. l% p4 _3 {
众里寻他千百度,默然回首还是看不懂你的代码! 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。 (当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多 方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都 能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。 因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文 件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子 上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀! 好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意 思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/
& I& _8 U2 X1 k: ?# s1 _5 X2 A/ G #ifndef _GPS_H_
5 Y" Y1 O% Z. ~6 j+ c) n #define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写) k# C- B% A( u- \: P
#define uint unsigned int
, B8 ?1 X$ |& m5 g #define uchar unsigned char
" k$ ]: D# F+ x4 N9 X* Q R typedef struct{ //你知道结构体是干啥的吗?装几个变量7 _( [# I( g0 N0 i4 N7 w \. |
int month;3 J' N( O- o) H" h& s' M) ^
int year;' X+ @! y6 U2 V: e+ H+ _3 Z% l
int data;$ Z9 j$ I! [ t4 x! g7 |, I2 F0 }
int hour;* r! V$ \6 ^2 l Z" d' Q
int minute;
H$ |/ f6 Q7 F4 o+ l7 ^; q int second; //这几个变量用来"装"GPS接收到的时间
" Y4 C) e3 G" f }dataTime;3 {3 G' t/ v& j
..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替$ b: x& _1 v* ^5 V5 U! s0 Y& r
/******下面是一系列函数名,再GPS.C中编写函数*******/
" M6 c4 p, H* x void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐- [$ Q7 C! I9 Q7 M" A
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头
6 e; j' y- [5 J; q int gpsGgaParse(char *line, gpsInfo *gps);
7 t6 x" Z% Y! x N, C, Y3 D) h, Y int gpsGsvParse(char *line, gpsInfo *gps);4 i/ b' h6 F( P4 u2 e
void integerToString(int x, char *str); //整型转字符串% o+ q. E% e: {9 m v8 G# b
#endif //程序结束 上面就是这个头文件,我们可以就看到它的格式就是这样的
6 G" t5 S. T" D4 r: r( H E#ifndef ......: l; V3 y: S2 u4 O7 _7 T
#define......7 w! K2 N6 j8 K& W _- o
...
( b: K) X5 u# ]! f9 @...
e6 f: } N, w8 c8 W) L#endif 如果使用的什么模块要接到I/O口,就在头文件中写 #include<reg51.h>
@6 ?8 G7 }, ysbit ...* s. } R+ H! i
sbit ...
$ I7 q: r. ?' Z" F5 C7 Ysbit ...; C2 s {* h. E
sbit ...
! `7 _) y6 e. i; U& c% W, B//等这样的代码,至于意思嘛,你当然懂! 现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。 9 P5 m2 Q% j6 t: W+ \
0 K, G" ^/ O2 d1 m, ~9 B- l: f |