- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七天 模块化编程思想
模块化编程思想
原码工作室
模块化编程概述
为什么要引入模块化编程?
通过以上几讲内容,我们初步掌握了单片机
C语言编程的基本原理与基本方法。同时我们可
以观察并体会到,随着代码量的增加,将所有代
码都放在同一个.c文件中的做法越发使得程序结
构混乱、可读性与可移植性变差,而模块化编程
是解决这个问题的常用而有效的方法。
模块化设计原则
高内聚:一个c文件里面的函数,只有相互
之间的调用,而没有调用其他文件里面的函数,
这样可可以视为高内聚。尽量减少不同文件里函
数的交叉引用。
低耦合:一个完整的系统,模块与模块之
间,尽可能的使其独立存在。也就是说,让每个
模块,尽可能的独立完成某个特定的子功能。模
块与模块之间的接口,尽量的少而简单。
模块化编程的三种手段
实现模块化编程的三个主要手段是函数、宏
定义与头文件。下面讲解一下头文件操作的详细
步骤。
第一步创建头文件
建立一个.c文件(源文件)和一个.h文件
(头文件)。原则上文件名可以任意命名,但强
烈推荐如下原则:.c文件与.h文件同名;文件名
要有意义,最好能够体现该文件代码的功能。例
如延时函数相关的源文件与头文件命名为delay.c
与delay.h。
第二步防重复包含处理
在.h文件中加入如下代码:
l#ifndef XXX
l#define XXX
l ... //此处添加代码
l#endif
其中的XXX原则上可以是任意字符,但同一个
工程中各个.h文件的XXX不能相同,因此强烈推荐如
下的规则:将.h文件的文件名全部大写,“.”替换成
下划线“_”,首尾各添加2个下划线“__”作为XXX。
例如对于delay.h文件,其内容如下:
l#ifndef __DELAY_H__
l#define __DELAY_H__
l ... //此处添加代码
l#endif
因为在同一个工程内,文件名都是唯一的,因
此这种命名规则可以保证XXX不会重复。之后要添
加到.h文件的代码都放在第3行的位置。
这样处理之后,当.h文件第一次被包含时,符号
XXX是未被定义过的,因此符合#ifndef的条件,编
译器会继续编译第1行以后的代码。然后编译到第2
行,先定义一下符号XXX,然后开始编译第3行直到
最后一行#endif的代码。而此后此.h文件再次被包含
时,符号XXX在第一次包含该.h文件时已被定义过
了,不符合第一行#ifndef的条件,则该.h文件的内容
就不会被编译器编译。总之,这样处理之后既能保
证.h文件的有效内容被编译,又能保证.h文件的有效
内容不被重复编译。
第三步代码封装
将需要模块化的代码封装成函数与宏定义。函数
体放在.c文件中,需要被外部调用的函数还要在.h文
件中声明一下;需要被外部调用的宏定义放在.h文件
中,仅会被本.c文件调用的宏定义放在.c文件中。
第四步尽量少用或不用全局变量
必须要用的全局变量的声明要放在.c文件中,需
要被外部调用的全局变量还要在.h文件中重新用
extern修饰声明一下,用来告诉编译器有这个变量的
存在(因为编译器的编译过程是按文件来的,链接过
程才是各个文件的合并,如果没有这一步extern修饰
声明就在另一个文件调用了这个变量,编译器会提示
没有此变量)。
第五步添加源文件
将.c文件添加到工程之中,同时在需要调
用.h文件中的宏或者函数(这里的函数是对应
的.c文件中函数的声明)的其他.c文件中添加代
码将该.h文件包含进去(例如#include
delay.h)。
第六步 使用
头文件中的函数、宏定义、全局变量可以在
包含了对应.h文件的.c文件中自由调用使用了
时钟芯片DS1302及其应用
DS1302简介
★时钟计数功能,可以对秒、分钟、小时、月、
星期、年的计数。年计数可达到2100 年。
★有31*8 位的额外数据暂存寄存器
★最少I/O 引脚传输,通过三引脚控制
★工作电压:2.0-5.5V
★工作电流小于320 纳安(2.0V)
★
您可能关注的文档
- 拖沓心理与大五人格因素.pdf
- “大五”人格测验在我国使用情况的元分析.pdf
- FMU41-2 FMU4操作手册.pdf
- 贫困大学生大五人格与心理健康的关系研究.pdf
- 3W4871-中文资料.pdf
- 浮夸还是奇迹?黄太吉的100亿思考.pdf
- 维密秀场内外 伦敦街头美妆风尚不浮夸.pdf
- 大五人格与科研人员工作绩效的相关性研究.pdf
- XFPM-050KPGR传感器.pdf
- 上海市高中生性格特点及其与血型的相关性研究.pdf
- 2023年安康市直属机关遴选公务员笔试真题汇编含答案解析(夺冠).docx
- 2023年白城市直属机关遴选公务员笔试真题汇编附答案解析.docx
- 2023年双鸭山市直属机关遴选公务员笔试真题汇编及答案解析(夺冠).docx
- 2023年平顶山市选调公务员考试真题汇编及答案解析(夺冠).docx
- 2023年四平市直遴选笔试真题汇编及答案解析(夺冠).docx
- 2023年南阳市直机关遴选公务员笔试真题汇编附答案解析.docx
- 2023年台北县直机关遴选公务员笔试真题汇编及答案解析(夺冠).docx
- 2023年昌吉州直机关遴选公务员笔试真题汇编附答案解析.docx
- 2023年宿州市直机关遴选公务员笔试真题汇编及答案解析(夺冠).docx
- 2026“梦工场”招商银行唐山分行寒假实习生招聘考试模拟卷含答案解析(夺冠).docx
原创力文档


文档评论(0)