单片机之模块化编程

简介: 引言单片机编程时,如果代码量不多,可以将所有的函数和定义等放在一个main.c文件中,但是随着代码量的增加,如果将所有代码都放在同一个.C文件中,会使得程序结构混乱、可读性与可移植性变差,而模块化编程就是解决这个问题的常用而有效的方法。

引言

单片机编程时,如果代码量不多,可以将所有的函数和定义等放在一个main.c文件中,但是随着代码量的增加,如果将所有代码都放在同一个.C文件中,会使得程序结构混乱、可读性与可移植性变差,而模块化编程就是解决这个问题的常用而有效的方法。

模块化设计的原则

“高内聚,低耦合”

高内聚:一个C文件里面的函数,只有相互之间的调用,而没有调用其它文件里面的函数,这样可以视为高内聚。尽量减小不同文件里函数的交叉引用。

低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每一个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。

模块化编程的方法

1.创建一个.c源文件和一个.h头文件

原则上文件可以任意命名;但强烈推荐如下原则:.c文件与.h文件同名;文件名要有意义,最好能够体现该文件代码的功能定义。
例如:IIC通信源文件与头文件命名为IIC.c与IIC.h。

2.防重复包含


头文件中需要防重复包含处理,防止头文件在被多个文件引用的时候,让编译器在编译时不会多次编译。
在.h文件中加入如下代码

#ifndef XXX

#define XXX

//Your Code

#endif

  

其中的XXX原则上可以是任意字符,在同一个工程中各个.h文件的XXX不能相同,因此强烈推荐如下的规则:将.h文件的文件名全部都大写,“.”替换成下划线”_”,首尾各添加2个下划线”__”作为XXX。

例如IIC.h中的写法:

#ifndef __IIC_H__
#define __IIC_H__

//code

#endif

  

3.代码的封装

.c文件中通常是:

函数的定义\
只被本.c文件调用的宏定义
.h文件中通常是
函数的声明
被外部调用的宏定义

 

4.添加到工程中

只需要将.文件添加到工程中,.h文件不同添加到工程里,同时在.c文件里把对应的.h文件包含进来。

以下是一个IIC.h和IIC.c文件的内容

IIC.h的内容

 

#ifndef __I2C_H__
#define __I2C_H__
#include <reg52.h>
#define uchar unsigned char
sbit SDA=P2^0;
sbit SCL=P2^1;
void delay();
void start();
void stop();
void ack();
void nack();
void write_byte(uchar date);
uchar read_byte();
void write_at24c02(uchar address ,uchar date);
uchar read_at24c02(uchar address);
#endif

 

IIC.c的内容

#include "i2c.h"
void delay()
{
	;;
}
/*各个函数的定义*/

main.c内容

 

#include <reg52.h>
#include "i2c.h"
void main() {   //code }

 

 

欢迎大家关注我的个人博客 http://www.wangchaochao.top/
微信扫码关注我的公众号

 

不定期更新个人学习笔记和技术总结,欢迎大家互相学习交流!

 

相关文章
单片机:探索其原理、应用与编程实践
单片机:探索其原理、应用与编程实践
161 1
51单片机实现俄罗斯方块游戏编程
设计了一款基于AT89C51单片机的俄罗斯方块游戏机,使用LCD12864液晶显示,按键控制方块移动与变形。游戏中,7种不同形状的方块随机下落,填满一行得分,满屏则游戏结束。包含电源、单片机最小系统、LCD和按键模块的硬件电路通过Proteus进行了仿真,展示了游戏运行、得分和计时等。代码部分展示了检查碰撞和更新地图的函数。
234 1
单片机:编程实践与应用探索
单片机:编程实践与应用探索
136 4
单片机编程入门与实践
单片机编程入门与实践
138 2
关于单片机编程里面调用sprintf死机的解决方法及原因分析
关于单片机编程里面调用sprintf死机的解决方法及原因分析
574 0
单片机原理与应用以及C51编程技术——data,idata,xdata,pdata,code
单片机原理与应用以及C51编程技术——data,idata,xdata,pdata,code
445 0
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
850 0
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
单片机原理与应用以及C51编程技术——硬件体系结构梳理(下)
单片机原理与应用以及C51编程技术——硬件体系结构梳理(下)
667 0
单片机原理与应用以及C51编程技术——硬件体系结构梳理(下)
单片机原理与应用以及C51编程技术——硬件体系结构梳理(上)
单片机原理与应用以及C51编程技术——硬件体系结构梳理(上)
1011 0
单片机原理与应用以及C51编程技术——硬件体系结构梳理(上)
蓝桥杯之单片机学习(十六)——C语言中头文件与模块化设计
蓝桥杯之单片机学习(十六)——C语言中头文件与模块化设计
257 0
蓝桥杯之单片机学习(十六)——C语言中头文件与模块化设计

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等