EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机的头文件究竟该如何写?
+ F2 u4 e. R& W; ~; I
# J6 q5 [9 D0 ]( j. v众里寻他千百度,默然回首还是看不懂你的代码! 我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。 (当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多 方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都 能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。 因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文 件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子 上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀! 好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意 思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/
6 U0 R: M4 ]2 }0 Q6 G #ifndef _GPS_H_; i& E! M& U7 L, Y: I9 Z; j
#define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写
; J0 o4 z7 B9 @$ j1 i #define uint unsigned int Z4 N) z& }5 a( ?
#define uchar unsigned char
! l/ G: G. P8 o typedef struct{ //你知道结构体是干啥的吗?装几个变量
z! k0 j, [/ P* O& ] int month;
1 J3 ?7 ]* P& |/ [) d$ p, k int year;$ ~; t; X3 [' B% a }) o
int data;$ c# k+ R6 M5 u. |. U3 t1 R
int hour;0 J. ?0 r, U( n& Z
int minute;
# P2 c2 W" k( p; s int second; //这几个变量用来"装"GPS接收到的时间" a- e2 y/ l5 F+ d" b- z* w7 C" J
}dataTime;
- R) e J, u# C) K( P4 O9 w8 R ..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替
9 d/ V% G" A8 V$ U /******下面是一系列函数名,再GPS.C中编写函数*******/
9 W" O8 C0 x* B1 W void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐3 ?" B2 Z$ O/ \( w/ v
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头% r9 k5 J( H, R! \8 V/ B0 ]
int gpsGgaParse(char *line, gpsInfo *gps);
8 X1 h# Q5 M1 n' D" H; K1 f) q int gpsGsvParse(char *line, gpsInfo *gps);3 i+ Q. K- T# x% G6 S
void integerToString(int x, char *str); //整型转字符串
K" U; R1 Q* b! T/ B' g! w #endif //程序结束 上面就是这个头文件,我们可以就看到它的格式就是这样的
+ w' V# M. |' N1 ?$ f#ifndef ......( i3 d2 k' ~) i. {- Q) m' g
#define....... r5 Y0 @5 p/ g# i; N! V3 y; F
...7 |% U* N4 u+ R
...2 a4 @- e2 U2 \; C
#endif 如果使用的什么模块要接到I/O口,就在头文件中写 #include<reg51.h>
5 A* m6 J. C& ]/ c& e, \sbit ...
9 Y; P8 b+ B4 J6 rsbit ...# T# ~! k* l# S3 P
sbit ..." N J+ t+ w" T3 _
sbit ...
* Z/ n# d9 t1 K1 M//等这样的代码,至于意思嘛,你当然懂! 现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。
& i" i/ u8 t& o# ]9 E' C! A8 L. q% D' v, [
|