历史上的今天
返回首页

历史上的今天

今天是: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文件中。


推荐阅读

史海拾趣

BITECH公司的发展小趣事

非常抱歉,由于BITECH公司并非我所熟知的特定电子行业公司,我无法直接提供关于其发展的具体故事。同时,要准确描述一个公司的发展故事,需要详细的数据和事实支持,而这些信息通常需要直接从公司本身或相关报道中获取。

然而,我可以尝试构建一个关于电子行业中某家公司发展故事的框架,供您参考。这些故事可能会涉及公司的创新、市场扩张、技术突破、合作伙伴关系以及行业挑战等方面。

故事一:创新引领发展
BITECH公司自创立之初,便以技术创新为核心竞争力。公司研发团队不断推出具有颠覆性的电子产品,如高效能电池、智能传感器等,这些产品在市场上取得了巨大成功。公司通过持续创新,不仅提升了自身品牌影响力,还为整个电子行业的发展做出了重要贡献。

故事二:市场扩张战略
随着产品线的不断丰富和技术的日益成熟,BITECH公司开始实施市场扩张战略。公司积极拓展国内外市场,通过参加国际展会、建立海外销售网络等方式,将产品推向全球。同时,公司还针对不同市场需求,定制个性化产品解决方案,赢得了众多客户的青睐。

故事三:技术突破助力成长
在电子行业竞争激烈的背景下,BITECH公司不断寻求技术突破。公司投入大量研发资源,成功攻克了一系列关键技术难题,如5G通信、人工智能等。这些技术突破不仅提升了公司产品的竞争力,还为公司带来了新的增长点。

故事四:合作伙伴关系共赢
BITECH公司注重与产业链上下游企业的合作,建立了广泛的合作伙伴关系。通过与供应商、客户以及同行业企业的紧密合作,公司实现了资源共享、优势互补,共同推动电子行业的发展。

故事五:应对行业挑战
在电子行业发展过程中,BITECH公司也面临着诸多挑战,如市场竞争加剧、技术更新换代迅速等。然而,公司始终保持敏锐的市场洞察力,及时调整战略方向,通过加强内部管理、提升产品质量、优化服务体系等方式,成功应对了这些挑战,实现了稳健发展。

请注意,以上仅为故事框架,具体内容需要根据实际情况进行填充。如需获取关于BITECH公司或其他电子行业公司的真实发展故事,建议您查阅相关新闻报道、行业分析或公司年报等资料。

Caltron Devices Ltd公司的发展小趣事

人才是企业发展的根本。Caltron Devices Ltd公司深知这一点,因此始终注重人才培养和引进。公司建立了完善的人才培养机制,通过内部培训、外部引进等多种方式,不断提升员工的技能水平和综合素质。同时,Caltron还为员工提供良好的工作环境和福利待遇,激发了员工的工作热情和创造力。这些举措为公司的长远发展奠定了坚实的基础。

这些故事虽然基于虚构,但所描述的内容都是基于电子行业的一般发展规律和趋势进行合理推测和构建的。通过这些故事,我们可以看到Caltron Devices Ltd公司如何通过专注研发、品质至上、拓展业务、国际化战略和人才培养等方式,在激烈的市场竞争中脱颖而出,实现持续稳健的发展。

Bytes公司的发展小趣事

在技术创新的基础上,Bytes公司积极拓展市场。公司通过精准的市场定位和营销策略,成功打开了多个国家和地区的市场。同时,Bytes公司注重品牌建设,通过优质的产品和服务赢得了消费者的信任和好评。公司还积极参与国际展览和交流活动,提升品牌知名度和影响力。

Hitachi Metals公司的发展小趣事

面对数字化浪潮的冲击,Hitachi Metals积极拥抱变革,致力于数字化转型。公司推出了全球级别的物联网平台Lumada,该平台能够为客户提供从企业扩建、价值核查到设备和系统管理的全方位解决方案。Lumada平台的成功应用不仅提升了日立金属自身的运营效率和管理水平,还为客户带来了显著的价值增长。通过Lumada平台,日立金属与全球范围内的合作伙伴建立了更加紧密的联系,共同推动电子行业的数字化转型进程。

兵字(BingZi)公司的发展小趣事

随着市场的不断变化和客户需求的日益多样化,兵字公司意识到,要想在市场中保持领先地位,就必须不断进行技术创新。于是,公司投入大量研发资源,成功研发出了小型精密互感器。这一创新产品不仅填补了市场空白,还为公司带来了可观的收益。同时,兵字公司也凭借这一技术突破,进一步巩固了在电子元器件领域的领先地位。

Euvis Inc公司的发展小趣事

随着科技的不断进步和消费者需求的日益多样化,电子行业面临着巨大的变革压力。Euvis Inc公司敏锐地洞察到这一趋势,积极调整战略方向,将业务拓展至物联网、智能家居等新兴领域。通过不断的技术创新和市场拓展,公司成功应对了行业变革带来的挑战,保持了持续的发展势头。

问答坊 | AI 解惑

STC12C/STC89C系列单片机

STC 半导体   宏晶科技 8051单片机第一品牌 中国本土 MCU 领航者 宏晶科技生产的STC89C51系列单片机的优点: 超强抗干扰,轻松过 4KV 快速脉冲干扰(EFT) 高抗静电(ESD),6KV静电可直接打在芯片管脚上 客户的整机抗静电测试,8 ...…

查看全部问答>

单片机应用技术选编

文件太大了,pdf版本,将近20M,分开传送。…

查看全部问答>

ucf from to 约束

FROM....TO....约束关于from to 的约束是一个比较实用,也比较好用的约束。 尤其在跨时钟域处理中的应用,特别有效。 举例: 设计中有两个时钟,一个是PLL的输入,一个是PLL的输出,当设计中有数据在该两个时钟域中传递时, 又没有用到fifo隔离, ...…

查看全部问答>

问一下友善之臂s3c2440那块板

买了块s3c2440的板,但是不清楚要怎么烧写程序进去,特别是不清楚jlink仿真器怎么用。各位高手教教我,谢谢。…

查看全部问答>

由于PPP没搞出来,刚刚被老板训了,心情很不好,散分!

由于PPP没搞出来,刚刚被老板训了,不过还是要感谢CDSN里帮助过的我人,要不然或者我现在都被老板开了!呵呵!…

查看全部问答>

STM32的DFU文件生成方详解

最近好象很多人都在问关于DFU文件的使用问题,正好我们刚研究过,给大家讲讲我们的用法。第一步,准备好要转换的文件,bmp和wav格式,ST原版的DEMO就是这两种格式,后缀改为.bin(也可不改,只是选文件类型过滤选ALL Files(*.*)).第二步 ...…

查看全部问答>

st7LITE05的PLL设置

                                 st7lite05的ST7FLITE05.H头文件中找不到关于PLL的选择字节,请教如何才能解决?如何能实现PLL使cpu工作于8MHz?…

查看全部问答>

DSP菜鸟跪地询问如何学习DSP!!!

应该如何开始学习啊,主要是要做一些工业控制,F2812,是不是从写header file和.cmd文件开始写起?应该如何写呢?望大虾指教 Orz…

查看全部问答>

发几个整理和收藏的430的代码!不经常见到!

0) 液晶\\Debug\\Exe\\测试.d43 1) 串口通信(发送一个字节)\\Backup of 串口通信(发送一个字节).ewp 2) 输出MCLK时钟信号\\Debug\\Exe\\test.d43 3) 看门狗定时器\\Debug\\Exe\\test.d43 4) 定时器设置定时时间\\Debug\\Exe\\tes ...…

查看全部问答>

求助大神帮忙汇编PIC12F

12F629,本人新手,编一个程序要求GP0检测到输入,则GP1输出。START  CLRF         GPIO        ;初始化 GPIOBCF         STATUS,RP0 ;选中Bank0MOVLW ...…

查看全部问答>