目标:
- 有序,便捷地建立大型工程。
- 追求接口单一性,将不需要的细节尽可能对外部隐藏。
- 便于重复利用代码。
- 便于分工合作
方式:
主函数调用模块函数。
具体实施:
根据功能将工程划分为不同模块。主函数只调用函数,而不定义函数。在各模块文件中定义功能函数,并将要用到的函数利用同名头文件申明外部函数供其他文件调用。
例子
流水灯设计
原程序代码:
#include<reg52.h>
sbit LED=P1^0;
unsigned int i,j;
void main()
{
while(1)
{
P1=~(1<<j++);
if(j==8)
j=0;
for(i=0;i<50000;i++);
}
}
我们将其模块划分并重新编译。首先分析功能可分为LED模块,主函数。
对应为:
main.c
Led.c Led.h
Led.c
#include <reg52.h>
#include "Led.h"
sbit LED=P1^0;
unsigned int i,j;
void ledFlash(void)
{
P1=~(1<<j); //灯亮
}
void ledStateChange(void)
{
if(j==8)
j=0;
for(i=0;i<50000;i++); //延时
j++;
}
Led.h
#ifndef _LED_H_
#define _LED_H_
extern void ledFlash(void);
extern void ledStateChange(void);
#endif
main.c
#include <reg52.h>
#include "Led.h"
void main()
{
while(1)
{
ledFlash();
ledStateChange();
}
}
结果截图:
总结:
主函数中将具体功能隐藏至其他模块文件中,通过引用头文件、外部函数调用函数。平时多积累相关模块提高代码复用率。