EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的头文件究竟该如何写?
2 \8 ?9 Q$ D# i) g$ z
% f/ Z" F2 U6 p8 M% C. J众里寻他千百度,默然回首还是看不懂你的代码! 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。 (当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多 方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都 能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。 因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文 件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子 上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀! 好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意 思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/
' u4 \5 k, M' b# v& N5 C | #ifndef _GPS_H_2 `( r8 @: h* Z
#define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写
$ F3 u- B% a. @9 @0 v- ~" R( y #define uint unsigned int, m5 m8 t/ e) K7 u0 |) s- P
#define uchar unsigned char0 `6 g4 Q. b) f/ G5 {6 \
typedef struct{ //你知道结构体是干啥的吗?装几个变量" m4 o" t! ^ z; X! A, y
int month;
/ M2 g* Y: |. A' B) [ int year;
: I7 {7 Z# R3 g/ f2 ^( ~- [ int data;% n( u7 u, A0 Y, d I1 Q* H3 o
int hour;) r1 c# R8 g# B" ^ q. |
int minute;% O# N; N% H# U9 y4 n. ~6 V
int second; //这几个变量用来"装"GPS接收到的时间
3 Q" y9 p4 B# d" a2 A }dataTime;
9 i E6 `3 U! A1 }, X. r F ..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替 W. K( G4 I- r
/******下面是一系列函数名,再GPS.C中编写函数*******/# x8 }' Z7 ]; ?9 C" H
void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐) k' q/ v5 o) W8 G- a" G
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头( v# L {5 J Z# m4 t7 a( {
int gpsGgaParse(char *line, gpsInfo *gps);- C! t( D9 @. `6 A+ p2 z) a; @
int gpsGsvParse(char *line, gpsInfo *gps);
3 q; K2 [$ y1 x1 T7 j void integerToString(int x, char *str); //整型转字符串5 V7 t9 y6 J: Y1 D, a! y
#endif //程序结束 上面就是这个头文件,我们可以就看到它的格式就是这样的
: K$ a) J, s t D#ifndef ......: c* ^, l) @# W2 b7 }, a
#define......" k! a" F( ]. l
...
# i8 ^. [8 ]- e) l) J. z4 C...- ~0 {9 ]& c7 L
#endif 如果使用的什么模块要接到I/O口,就在头文件中写 #include<reg51.h>
$ u j5 ~9 r- C. L' `sbit ...; A% h; i. X9 P0 j) A) D. x
sbit ...
: f I' T4 d+ w) |6 L4 ]sbit ...
/ K6 }+ B" _3 f( jsbit ...
6 B7 q7 R) a) _0 r) W7 o//等这样的代码,至于意思嘛,你当然懂! 现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。 , A0 U% _7 Z. q0 ^% i
) r C" v. ~; X4 _+ `5 Z |