单片机程序模块化编程
更新时间:2023-06-10 15:01:01 阅读量: 实用文档 文档下载
单片机程序模块化编程
程序模块化方法
模块化编程,必然会涉及到多文件编译,也就是工程编译。在这样的一个系统中,往往会有多个C文件,而且每个C文件的作用不尽相同。在我们的C 文件中,由于需要对外提供接口,因此必须有一些函数或者是变量提供给外部其它文件进行调用。
假设我们有一个delay.c文件,此为一个延迟函数
void delayms (unsigned char xms)
{
unsigned char i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
而在我们的另外一个文件中需要调用此函数,那么我们该如何做呢?
头文件的作用正是在此。可以称其为一份接口描述文件。其文件内部不应该包含任何实质性的函数代码。我们可以把这个头文件理解成为一份说明书,说明的内容就是我们的模块对外提供的接口函数或者是接口变量。同时该文件也包含了一些很重要的宏定义以及一些结构体的信息,离开了这些信息,很可能就无法正常使用接口函数或者是接口变量。但是总的原则是:不该让外界知道的信息就不应该出现在头文件里,而外界调用模块内接口函数或者是接口变量所必须的信息就一定要出现在头文件里,否则,外界就无法正确的调用我们提供的接口功能。因而为了让外部函数或者文件调用我们提供的接口功能,就必须包含我们提供的这个接口描述文件----即头文件。同时,我们自身模块也需要包含这份模块头文件(因为其包含了模块源文件中所需要的宏定义或者是结构体),好比我们平常所用的文件都是一式三份一样,模块本身也需要包含这个头文件。
下面我们来定义这个头文件,一般来说,头文件的名字应该与源文件的名字保持一致,这样我们便可以清晰的知道哪个头文件是哪个源文件的描述。
于是便得到了delay.c的头文件delay.h 其内容如下。
#ifndef __DELAY_H__
#define __DELAY_H__
extern void delayms(unsigned char xms);
#endif
这与我们在源文件中定义函数时有点类似。不同的是,在其前面添加了extern 修饰符表明其是一个外部函数,可以被外部其它模块进行调用。
#ifndef __DELAY_H__
#define __DELAY_H__
……
#endif
这是头文件的编写格式,__DELAY_H__这个是头文件的名
单片机程序模块化编程
字,必须大写,中间的横线不能少。一般来说,头文件的名字应该与源文件的名字保持一致,这样我们便可以清晰的知道哪个头文件是哪个源文件的描述。
我们以让3个LED灯闪亮,芯片型号AT89C51为例介绍:1,打开keil软件中建立多个工程。(如图)
2.
单片机程序模块化编程
3.
4.
单片机程序模块化编程
5.
6.
单片机程序模块化编程
7.
8.
单片机程序模块化编程
9.
XX.c为源文件,XX.h为头文件10.单击左侧Target。
单片机程序模块化编程
下面就开始具体写程序。
单片机程序模块化编程
11.我们先来写一个LED1.h这个头文件。
我们要调用的就是LED.h这个头文件下的void display1();这个函数。
再写LED1.c这个源文件。LED1.c文件就是void display1()这个函数的功能描述。
这个程序中,我们调用了#include<reg51.h>,#include"led1.h" #include"delay.h"这三个头文件。注意:是自己编写的头文件要用引号。
12.再依次编写LED2.h,LED2.c,LED3.h,LED3.c,DELAY.c
单片机程序模块化编程
DELAY.h。
单片机程序模块化编程
单片机程序模块化编程
程序写完了,在编译之前
单片机程序模块化编程
单片机程序模块化编程
单片机程序模块化编程
单片机程序模块化编程
再次编译。
单片机程序模块化编程
如果你还嫌不够整洁,我们还可以把所有的源文件和头文件放在一个文件夹中。
单片机程序模块化编程
再次编译:
出现各种错误,原因是我们把delay和LED这两个函数放在了新的文件夹中,错误是正常的。下面就来改错:
单片机程序模块化编程
单片机程序模块化编程
单片机程序模块化编程
添加完后出现:
单片机程序模块化编程
正在阅读:
单片机程序模块化编程06-10
人事招聘流程及制度,相关表格04-22
初级日语(一)模拟试卷和答案03-03
黔晟国资董〔2012〕5号11-06
《地球上的水》教学设计(网络课)12-16
2022年山东师范大学化学化工与材料科学学院311教育学专业基础综04-17
机动车检测站可行性研究报告 - 图文11-13
螺旋桨设计计算说明书模版09-08
易混淆的繁简体字对照表07-24
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 模块化
- 单片机
- 编程
- 程序
- 探析国民经济核算改革创新
- 电力安规心得体会
- 留守儿童之家工作计划
- 西安市城市管理综合行政执法局职能配置内设机构和人员编制规定
- Model_Development_for_Auto_Spare_Parts_Inventory_Control_and_Management1
- 模拟商务谈判剧本双语版
- 2011浦城县科目一考试A2车型试题
- 第4章 广告作品的设计艺术(3)
- 2011《第一财经周刊》广告报价单20110408
- 西青开发区及赛达人力简介改
- 浅谈建筑工程的岩土勘察与地基处理问题
- 圆柱和圆锥专项练习
- 《数字化测图原理与方法》实习大纲与指导书
- 股票筹码分布图怎么看
- 软件定义网络SDN的研究进展
- 啤酒发酵度影响因素及提高对策
- 星形胶质细胞和神经损伤
- 发展党员座谈会记录
- 农村小学如何开展语文综合性学习
- “唤醒式”德育课堂教学模式