EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的头文件究竟该如何写?+ k" Q$ Q5 p' e
- e% A" [* k0 W' \
众里寻他千百度,默然回首还是看不懂你的代码! 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。 (当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多 方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都 能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。 因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文 件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子 上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀! 好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意 思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/, k1 I2 a& ]# `
#ifndef _GPS_H_2 ~# J4 Z7 K ?
#define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写7 S1 l) ^8 F' z. }3 C3 Y
#define uint unsigned int( F4 t; r( q1 U; i3 B
#define uchar unsigned char# [8 O" \$ \3 N* P4 I9 p) K/ `) Q3 \
typedef struct{ //你知道结构体是干啥的吗?装几个变量
# Y7 A. d8 |- E/ j1 a int month;0 [6 A6 }& z5 n$ I, d$ a9 O/ G" o
int year;( A+ x+ _6 m# |+ h0 h6 a
int data;: o1 X1 c7 z% x6 H$ P
int hour;
' G+ n* o6 K/ ~* F& V int minute;
( n* |; f# C* U int second; //这几个变量用来"装"GPS接收到的时间/ _& x0 Y' \. C; ]2 u+ k
}dataTime;% r# z8 M" s; h; I$ x
..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替 Q& b% k" ~/ A) V: o
/******下面是一系列函数名,再GPS.C中编写函数*******/8 O7 Y3 p5 m) t) c
void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐! o! t6 U; x7 l' y; j( v
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头
" u4 @ K% }; m int gpsGgaParse(char *line, gpsInfo *gps);
* p. ~- ~5 P- B* ?, |1 u int gpsGsvParse(char *line, gpsInfo *gps);
/ \( N" C7 m0 j8 M5 j8 Z void integerToString(int x, char *str); //整型转字符串/ w9 E5 c* F9 q: u* P( {. \
#endif //程序结束 上面就是这个头文件,我们可以就看到它的格式就是这样的
7 G" K+ d- F# C; m* R$ Y G8 ?0 L% p#ifndef ......
% g+ b8 H& i! H4 M! Y; C#define......+ m2 y# Q7 t7 z, Q! ?3 ]# a
...
# C9 r! D* d3 \% t! l$ m' O3 P...
9 F" f/ _* K r6 l/ J% B" z1 Q. ?#endif 如果使用的什么模块要接到I/O口,就在头文件中写 #include<reg51.h>; c P1 q/ {: {
sbit ...
3 o+ p* J3 I3 X9 E9 fsbit ...$ W3 H, _ G( P. Z6 t
sbit ...7 {9 h' I0 J4 Q: S I" O
sbit ...9 b' T$ s5 @9 x$ v9 K& J3 R
//等这样的代码,至于意思嘛,你当然懂! 现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。
; x: z5 I3 L" X+ x# F$ I; i) I: l! m0 T# f" f, V
|