找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2256|回复: 5
打印 上一主题 下一主题
收起左侧

算是详细了!单片机程序头文件的定义、编写及引用介绍

  [复制链接]
跳转到指定楼层
楼主
成都控制板设计提供_算是详细了!单片机程序头文件的定义、编写及引用介绍
SO技术分享之31
初听迷茫不必慌,日出雾散路明亮。
本文介绍头文件的定义、编写、保存及引用等方面的内容,包括了一般的格式要求、例程等。
什么是头文件?
头文件在C语言程序开发中一般来说是必需的,一般在C程序的开头就得引用头文件。
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明,而定义文件用于保存程序的实现。
为什么要用头文件?
如果没有头文件,那么定义只有就在C文件中进行,有几个坏处:
->不便于阅读。定义和功能代码放在一起,可读性变差;
->重复劳动,增加程序量。在各个C文件中,只要用到了就得重新定义一下,重复的代码会变多等。
如需项目开发定制,可Q-Q: 2531二六3726。
头文件编写的一般格式要求是怎样?

很多东西都有格式的,按照格式来做一般不会出错。图1为头文件定义的一般结构。
开头的#ifndef和最后的#endif需要成对出现,它的含义为假如没有定义某文件的话,那么执行某些操作。在#ifndef和#endif之间可以编写头文件定义的代码,如载入其他头文件、引脚定义、子程序预定义等的。
下表给出了图1中部分代码的解释。
表 1 图1的要点解释
  
#ifndef __XXX_H__
  
  
#endif
  
含义为假如没有定义XXX.H,那么就执行某些操作。
  
Ifendif必须成对使用。
#define __ XXX _H__
定义XXX.H
#include <xxx.h>
载入相关的系统头文件xxx.h
#include yyy.h
载入相关的自定义头文件yyy.h
sbit x=p;
系统位定义。一般用于定义引脚,用x代替引脚p
#define  X Y
符号变量定义,X就表示Y值。Y一般为具体数值。XY之间有空格
void XX();
子程序预定义。在其他程序里载入了这个头文件后,就能调用XX子程序。预定义后在对应的C文件里还得编写具体的子程序代码。
一个头文件编写的例子

有个例子,会有更加生动的理解。图2为一个头文件定义的例子,头文件的名字位relaycontrol.h,这个头文件里包含了载入其他头文件、引脚定义、符号变量定义、子程序预定义等内容。
头文件的保存方法
保存头文件一般有2种方法:
(1)、在keil中保存H文件:如例,假如在keil中新建了H文件,编写完头文件代码后,点击保存按钮,命名后保存在电脑硬盘(与引用它的C文件在同一个文件夹)里即可,本例中保存的头文件为relaycontrol.h。
(2)、在电脑里新建一个TXT文件,再改扩展名为.h:在电脑硬盘(与引用它的C文件在同一个文件夹)中新建一个txt文件,写入头文件代码,保存,并改扩展名为.h。本例中将这个txt文件名及扩展名改为relaycontrol.h。
怎么在C程序中引用头文件?


  在C程序中,头文件需要先引用后才能使用,一般引用头文件放在程序的开头位置。
在C文件中引用头文件的方法很简单,就是在程序中用“#include”指令把相应的头文件载入就行了。
引用后,在这个C文件中就能使用头文件里已经定义的内容,如定义的引脚、符号变量和子程序等。
是否需要帮助?
提供单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统,软件、APP开发设计定制订做。如有项目需要,可Q:2531二六3726。
本节完,精彩待续。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:514317 发表于 2022-4-23 11:09 | 只看该作者
编写功能多的程序  .h文件是必须的   
回复

使用道具 举报

板凳
ID:57414 发表于 2022-4-23 14:17 | 只看该作者
对于不懂程序的我来说,受益匪浅;谢谢楼主!
回复

使用道具 举报

地板
ID:1001848 发表于 2022-4-26 17:37 | 只看该作者
程序分块写可读性会好很多,学到了学到了
回复

使用道具 举报

5#
ID:759755 发表于 2022-4-26 19:37 | 只看该作者
假如没定义,就定义它,不是太明白
回复

使用道具 举报

6#
ID:1012735 发表于 2022-4-27 18:21 | 只看该作者
本帖最后由 hy47566398 于 2022-4-27 18:34 编辑

#ifndef __XXX_H__
这一句只是程序编译时判断是否定义了 __XXX_H__ 宏
也就是程序此时是否程序执行过了  #define __ XXX _H__ , 以防头文件被重复包含定义了  __ XXX _H__  宏,表示程序执了这个头文件代码,程序跳到#endif处执行
如果没有定义这个宏,执行#ifndef后的代码
__ XXX _H__ 这个宏名称可以随便写,跟文件名一点关系都没有
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表