EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的头文件究竟该如何写?
) X+ u% c; ^7 M) j. H% @5 W5 m) A' z" N Z$ G2 c* ^ C3 d3 h- k
众里寻他千百度,默然回首还是看不懂你的代码! 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。 (当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多 方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都 能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。 因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文 件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子 上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀! 好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意 思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/: E5 s6 ^' f9 P9 ?# Y1 U
#ifndef _GPS_H_
) F- F: L1 K, L5 m #define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写6 f, _8 ]0 I* k$ r' c7 k* |$ Z/ |. \# v' F
#define uint unsigned int
; G/ V( V* u# s- N9 A. v #define uchar unsigned char
- E% m* X6 m2 w; ~" o typedef struct{ //你知道结构体是干啥的吗?装几个变量8 s7 P2 Z# y7 N
int month;
( u: E _1 a4 h: K- D, g int year;
1 A1 C) o" a$ Z- U! y% E5 {7 ?0 T' d int data;& L5 ^! U) K" |+ s
int hour;" z8 D8 V$ x) H% S8 o1 j
int minute;
! O) y4 L/ p$ \: Z int second; //这几个变量用来"装"GPS接收到的时间0 ~5 _3 o& c' m
}dataTime;; U& ]* p1 i3 H$ z- E. L/ `7 X
..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替
# f" F2 t; x3 F7 d ~ /******下面是一系列函数名,再GPS.C中编写函数*******/$ u* M p$ ~# q) x
void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐8 O7 R: K/ Q1 ?- C- l5 V
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头' b& M9 F* A+ n0 k2 m
int gpsGgaParse(char *line, gpsInfo *gps);
0 K+ i5 Y5 G* S int gpsGsvParse(char *line, gpsInfo *gps);
5 m5 r8 e2 P% ^1 r% h# B void integerToString(int x, char *str); //整型转字符串
7 S! h9 m1 |, V #endif //程序结束 上面就是这个头文件,我们可以就看到它的格式就是这样的4 I' e, U- {1 f2 t% n
#ifndef ......
+ C+ R3 u8 m) j' M$ M1 E% W% G4 W#define......
! h& B# z7 u: U$ _/ q0 v...
0 N+ j( D! A( }8 r, ]...9 @8 b; z4 z: m5 D
#endif 如果使用的什么模块要接到I/O口,就在头文件中写 #include<reg51.h>
( `2 d- K4 I3 h! Ksbit ...5 |4 V" {; C$ O
sbit ...
@) z1 n2 N; K% Y% G2 Msbit ...5 n6 |' e, W& z+ n
sbit ...7 s% i9 B) A. J/ Z5 s/ |
//等这样的代码,至于意思嘛,你当然懂! 现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。
3 u! W- `6 g1 a) M; D' e5 g% e) Z) F- @9 r7 s
|