带后台的响应式网站,镇江网站设计多少钱,软文推广系统,seo培训近期写了一些比较大的单片机程序#xff0c;找了很多参考资料#xff0c;看了大量别人的程序。我从中发现了自己对于C语言编程还只是知道如何实现功能#xff0c;但对编程规范掌握的不好#xff0c;编程习惯也没有很好的养成。学了这么久的单片机#xff0c;还真是挺难为情…近期写了一些比较大的单片机程序找了很多参考资料看了大量别人的程序。我从中发现了自己对于C语言编程还只是知道如何实现功能但对编程规范掌握的不好编程习惯也没有很好的养成。学了这么久的单片机还真是挺难为情的由此我将一些经验分享出来供大家参考及修正。说一说起因为什么标题叫“几人不知头文件“。当我在写一些代码量较大的程序时因为没有合理的规划代码结构导致代码顺序很混乱当要查找一些功能函数时只能打开Functions窗口。但我常常忘了有这么个工具就使劲在一篇长长的代码中去翻阅。这让我很是头疼。一阵头疼为啥会这样呢还不是因为学的不好用四川话来说就是“二十九天的徒弟”。超级难受只掌握了个皮毛。虽然有时候看着自己的代码很厉害但仔细一看烂的过分偶尔都会想这是我写的吗虽然自己清楚的知道这就是我写的但始终不想承认。还是要承认才行当我在阅读别人的代码时发现他们的代码调理清晰功能明确。有时候看到功能一样的代码为啥自己的就是很丑呢。拒绝接受还不是因为没有使用头文件来分开功能代码所有的功能代码都在一个.c文件下能不丑吗玩着玩着就几百行代码了。各种功能函数看的眼花缭乱。于是我决定痛改前非。做一下功能分类。相信自己一定可以。不敢相信啊我居然会痛改前非于是我便开始去学习怎么使用头文件怎么在文件外定义函数调用。感觉自己好厉害这里就要讲干货了1、什么是头文件(.h)在单片机C程序设计中那些啥项目一般都按照功能进行结构化设计将一个项目划分为多个功能每一个功能的相关程序代码放在一个.c文件中称之为一个模块xxx.c的xxx就是功能名。但光有一个.c肯定是不够的是不能被主函数所调用的。还需要一个.h文件自然这个头文件就出来了。一个模块由两个文件组成一个*.h文件对模块中的数据结构函数原型I/O端口进行描述和声明另一个则是*.c文件对数据实例或对象定义以及函数算法具体实现。咱还是举个例子具体说明一下吧。举个栗子实际说明一下啥是.h文件上代码DS1302.H#ifndef __DS1302_H_#define __DS1302_H_//---包含头文件---//#include#include//---重定义关键词---//#ifndef uchar#define uchar unsigned char#endif#ifndef uint #define uint unsigned int#endif//---定义ds1302使用的IO口---//sbit DSIOP3^4;sbit RSTP3^5;sbit SCLKP3^6;//---定义全局函数---//void Ds1302Write(uchar addr, uchar dat);uchar Ds1302Read(uchar addr);void Ds1302Init();void Ds1302ReadTime();//---加入全局变量--//extern uchar TIME[7];//加入全局变量#endif 这里重新定义了关键字定义了I/O端口以及进行了函数声明。我们在主函数中只需要包含这个头文件就可以调用DS1302.c中的函数。这里未贴出代码太长了呀。2、.h文件的作用作为项目设计除了对项目总体功能进行详细描述外激素hi对内阁模块进行详细定义也就是给出所有模块的头文件。通常.h头文件要定义模块中个函数的功能以及输入输出参数的要求。也可以在头文件中先规划一下相应的功能函数再根据.h文件进行设计、编程、调试。我们个人编程最主要的作用还是进行模块化管理方便自己进行开发和设计。当然如果是企业开发为了安全需要保密模块实现后可以链接文件obj或库文件lib的方式提供给项目其他成员使用。因为不用提供源代码就可以进行公开发行保证我们程序员和公司的所有权。同时也可以防止别人有意无意修改产生非一致性造成版本或功能混乱。如果要引用模块内的数据或算法函数只要用include包含指定模块的.h文件即可。下一个继续3、.h文件的基本组成我们从上面的DS1302.h文件中可以看出.h文件有哪些组成吗我觉得可以仔细看来分析一下。#ifndef __DS1302_H_ // 这一句是防止重复引用如果没有定义过__DS1302_H_这个 文件就编译下一句#define __DS1302_H_ // 此符号唯一表示只要引用过一次即#include则定义符号__DS1302_H_#include // 这句没啥好说的就是包含51单片机的特殊寄存器#ifndef uchar // 这一句还是和上面的是一样的为了防止重复引用定义各种功能函数原型声明///#endif // 这句是整个文件的结束标志那怎么可能嘛最后写点第一次尝试加入表情包不知道效果怎么样。对于头文件暂时就说这么多以后想起来再补充吧。对于大型项目的设计编写模块化设计的这种思想很重要使用头文件这种方式是比较方便的让代码管理起来更加方便设计起来更加方便。对于设计思路也有一定的帮助只需要想我这个模块该怎么写。怎么样去设计。这也就是模块化程序设计的思想所在。我觉得下面的更重要分享更多单片机编程方面的知识用自己踩过的坑给大家展示如何躲避他们。关注并私信我发送“08”即可获取文中实例的完整程序及仿真文件。关注点赞评论在评论区说出你的想法和我一起交流你的支持是我创作的动力一枚科技仔感谢您的阅读。期待你的评论哟