历史上的今天
今天是:2024年11月20日(星期三)
2018年11月20日 | 51单片机的头文件究竟该如何写?
2018-11-20 来源:eefocus
众里寻他千百度,默然回首还是看不懂你的代码!
我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。
(当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多
方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都
能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。
因此,我们可以将一个程序写在多个文件中(即以.c为后缀的文件中)。这时聪明的你就会问了,那么我写了了这么多文件,最后只通过一个按钮编译,生成HEX这个家伙,那么各文件又是怎样联系一起的呢?(啊,说了这么多,终于说到点子上了,ZC一下,看来我的语言表达能力的确得练练)这就是头文件存在的价值呀!
好了,说重点。那么头文件中都改装些什么呢?简单来说就是 预处理+引脚定义+函数名。再多的汉字也表达不了我的意思,还是代码说话吧。/****下面是一个关于GPS模块的程序头文件,文件名:GPS.h****/
#ifndef _GPS_H_
#define _GPS_H_ //_GPS_H_与文件名一致,只是改为大写
#define uint unsigned int
#define uchar unsigned char
typedef struct{ //你知道结构体是干啥的吗?装几个变量
int month;
int year;
int data;
int hour;
int minute;
int second; //这几个变量用来"装"GPS接收到的时间
}dataTime;
..... //后面仍是一个结构体,类似,所以我想偷一下懒用。。。代替
/******下面是一系列函数名,再GPS.C中编写函数*******/
void gpsInit(void); //GPS初始化程序,gpsInit为函数名我比较喜欢用匈牙利/驼峰命名法,强 烈推荐
int gpsRmcParse(char *line, gpsInfo *gps); //RMC为接收到的数据头
int gpsGgaParse(char *line, gpsInfo *gps);
int gpsGsvParse(char *line, gpsInfo *gps);
void integerToString(int x, char *str); //整型转字符串
#endif //程序结束
上面就是这个头文件,我们可以就看到它的格式就是这样的
#ifndef ......
#define......
...
...
#endif
如果使用的什么模块要接到I/O口,就在头文件中写
#include
现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。
史海拾趣
|
STC 半导体 宏晶科技 8051单片机第一品牌 中国本土 MCU 领航者 宏晶科技生产的STC89C51系列单片机的优点: 超强抗干扰,轻松过 4KV 快速脉冲干扰(EFT) 高抗静电(ESD),6KV静电可直接打在芯片管脚上 客户的整机抗静电测试,8 ...… 查看全部问答> |
|
FROM....TO....约束关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。 举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离, ...… 查看全部问答> |
|
最近好象很多人都在问关于DFU文件的使用问题,正好我们刚研究过,给大家讲讲我们的用法。第一步,准备好要转换的文件,bmp和wav格式,ST原版的DEMO就是这两种格式,后缀改为.bin(也可不改,只是选文件类型过滤选ALL Files(*.*)).第二步 ...… 查看全部问答> |
|
应该如何开始学习啊,主要是要做一些工业控制,F2812,是不是从写header file和.cmd文件开始写起?应该如何写呢?望大虾指教 Orz… 查看全部问答> |
|
0) 液晶\\Debug\\Exe\\测试.d43 1) 串口通信(发送一个字节)\\Backup of 串口通信(发送一个字节).ewp 2) 输出MCLK时钟信号\\Debug\\Exe\\test.d43 3) 看门狗定时器\\Debug\\Exe\\test.d43 4) 定时器设置定时时间\\Debug\\Exe\\tes ...… 查看全部问答> |
|
12F629,本人新手,编一个程序要求GP0检测到输入,则GP1输出。START CLRF GPIO ;初始化 GPIOBCF STATUS,RP0 ;选中Bank0MOVLW ...… 查看全部问答> |




