51单片机的头文件究竟该如何写?
2022-11-30

众里寻他千百度,默然回首还是看不懂你的代码!

我相信,对于初学单片机编程或其他语言编程的朋友来说,刚开始我们编程时总喜欢把所有的代码都写在一个文件中。

(当然如果你是绝世天才那就另当别论了,哈哈)。其实我也如此,刚开始我就想,将所有的代码都写在一个文件中那该多

方便,打开一个文件都可以看清。当然,起初我们很容易看明白,因为你我都知道,咱写的代码只有那寥寥几行,倒着背都

能背下来。但当后来我们写的代码越来越多时,我们往往苦于阅读自己的代码。

因此,我们可以将一个程序写在多个文件中(即以.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<reg51.h>
sbit ...
sbit ...
sbit ...
sbit ...
//等这样的代码,至于意思嘛,你当然懂!

现在,头文件写完了,那么接下来的工作就简单多了,将你的头文件加载到所要使用该头文件中内容的C文件中。

声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 单片机
  • 嵌入式
  • MCU
  • STM
  • 常用单片机之间的通信实例

    本文将分析比较几种单片机之间的方式、难点,并提出一种解决方案。1、几种常用单片机之间的通信方式①采用硬件UART进行异步串行通信。这是一种占用口线少,有效、可靠

    11小时前
  • 单片机内几种数据存储手段

    单片机就是个小计算机,跳蚤虽小不但五脏惧全,有时还跳得很高呢!自然,大计算机少不得的数据存储系统,小不点的单片机一样有,而且往往和CPU集成在一起,更加显得小巧

    昨天
  • 如何保证MCU上电后RAM的初始值唯一

    由于工作的原因,笔者经常接到工程师询问MCU内部的RAM上电之后的初始值到底是什么,有什么特性和规律。今天笔者就以设计过程中遇到的几个问题与大家做一个交流。首先

    昨天
  • P51XAG37单片机和液晶显示器的接口设计

    0引言P51XA是PHILIPS公司的一种16位单片机,可管理的存储器空间大,运行速度快,支持实时多任务系统的增强了实现高级语言的支持,可以运用在需要复杂、高速

    昨天
  • 基于C8051F系列单片机的数据采集系统USB接口设计

    1引言随着现代工业生产和科学研究对数据采集系统的要求日益提高,传输速度、纠错能力和操作安装的简易性是人们进行采集数据时一直关注的问题,这使得数据通讯技术不可避免

    前天
  • 硬中断和软中断的区别

    概述从本质上来讲,中断是一种电信号,当设备有某种事件发生时,它就会产生中断,通过总线把电信号发送给中断控制器。如果中断的线是激活的,中断控制器就把电信号发送给处

    前天
  • STM32时钟模型和内部时钟树

    时序在数字电路中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了它,就像人类的历史有了时间

    前天
  • 基于LPC54101和SDK实现串口DMA接收超时的机制

    在MCU的应用中,经常需要通过串口进行不定长数据包的传输。发送方很简单,不需特别的考虑,而接收方则需要能够侦测到数据包的结束。接收方的简单做法是结合串口的IDL

    前天
  • STM32基础精华及注意事项

    一、背景如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于ARMCortex

    前天
  • 如何采用FIFO存储器实现A/D转换器与ARM的接口设计

    在高频超声波数据采集系统中,很多高速A/D转换器往往不能直接与处理器相连接,这时就需要使用FIFO在处理器与A/D转换器之间架一座桥梁,FIFO的先入先出特性可

    02-06
  • 超声波无损检测系统的A/D与ARM接口设计

    在高频超声波数据采集系统中,很多高速A/D转换器往往不能直接与处理器相连接,这时就需要使用FIFO在处理器与A/D转换器之间架一座桥梁,FIFO的先入先出特性可

    02-06
  • 单片机定时器使用过程中常见的两种问题

    在单片机的学习过程中,单片机定时器的合理设置和应用是非常关键的一步,也是刚开始接触单片机知识的新人工程师们比较容易出错误的一个环节之一。在今天的文章中,我们为大

    02-03
下载排行榜
更多
广告