本文共 1347 字,大约阅读时间需要 4 分钟。
单片机编程时,如果代码量不多,可以将所有的函数和定义等放在一个main.c文件中,但是随着代码量的增加,如果将所有代码都放在同一个.C文件中,会使得程序结构混乱、可读性与可移植性变差,而模块化编程就是解决这个问题的常用而有效的方法。
高内聚:一个C文件里面的函数,只有相互之间的调用,而没有调用其它文件里面的函数,这样可以视为高内聚。尽量减小不同文件里函数的交叉引用。
低耦合:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每一个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。
原则上文件可以任意命名;但强烈推荐如下原则:.c文件与.h文件同名;文件名要有意义,最好能够体现该文件代码的功能定义。
例如:IIC通信源文件与头文件命名为IIC.c与IIC.h。#ifndef XXX#define XXX//Your Code#endif
其中的XXX原则上可以是任意字符,在同一个工程中各个.h文件的XXX不能相同,因此强烈推荐如下的规则:将.h文件的文件名全部都大写,“.”替换成下划线”_”,首尾各添加2个下划线”__”作为XXX。
例如IIC.h中的写法:
#ifndef __IIC_H__#define __IIC_H__//code#endif
.c文件中通常是:
函数的定义\
只被本.c文件调用的宏定义.h文件中通常是函数的声明被外部调用的宏定义
只需要将.文件添加到工程中,.h文件不同添加到工程里,同时在.c文件里把对应的.h文件包含进来。
#ifndef __I2C_H__#define __I2C_H__#include#define uchar unsigned charsbit 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
#include "i2c.h"void delay(){ ;;}/*各个函数的定义*/
#include#include "i2c.h" void main(){ //code}
欢迎大家关注 http://www.wangchaochao.top/
微信扫码关注我的公众号
不定期更新个人学习笔记和技术总结,欢迎大家互相学习交流!
转载地址:http://wtrdx.baihongyu.com/