c语言模块化编程的方法
模块化设计原则:高内聚
第一步:创建头文件(源文件与头文件同名如delay.c与delay.h)
第二步:防止重复包含处理
在.h文件里加入
#ifndefXXXX
#defineXXXX
.......
#endif
例如:
#ifndef_DELAY_H__
#define_DELAY_H__
.......
#endif
第三步: 代码封装(内部调用)
封装成函数或者宏定义以便提高可读性和可修改文件,尽量少用或者不用全局变量
第四步:使用源文件
.c文件添加到文件中
模块化编程实例:
delay.h文件
#ifndef __DELAY_H__
#define __DELAY_H__
#define uchar unsingned char
#define uint unsigned int
void delay50us(uint t);
void delay50ms(uint t);
#endif
delay.c文件
#includereg52.h>
#include"模块化编程实例.h"
void delayus(uint t)//延时函数
{ uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
void delayms(uint t)//延时函数
{ uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);
}
数码管.h文件
#ifndef __DELAY_H__
#define __DELAY_H__
#define"模块化编程实例.h"
#define uint unsigned int
void dispaytable(uchar *p);
void dispayt(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6,uchar num7,);
#endif
数码管.c文件
#include"数码管.h"
#include"模块化编程实例.h"
unsigned char code smg_du[]={0xfe,0xfd,0xfb,0xf7,0xef,0xbf,0x7f};
unsigned char code smg_we[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
void display_table(uchar *p)
{
uchar i;
foe(i=0;i8;i++)
{
P1=smg_du[*p];
P2=smg_we[i];
delay_50us(20);
}
}
void display(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6,uchar num7,)
{
P1=smg_du[mun0];
P2=smg_we[0];
delay_50us(20);
P1=smg_du[mun1];
P2=smg_we[1];
delay_50us(20);
P1=smg_du[mun2];
P2=smg_we[2];
delay_50us(20);
P1=smg_du[mun3];
P2=smg_we[3];
delay_50us(20);
P1=smg_du[mun4];
P2=smg_we[4];
delay_50us(20);
P1=smg_du[mun5];
P2=smg_we[5];
delay_50us(20);
P1=smg_du[mun6];
P2=smg_we[6];
delay_50us(20);
P1=smg_du[mun7];
P2=smg_we[7];
delay_50us(20);
}
mian.c文件
#include"数码管.h"
#includereg52.h>
#include"模块化编程实例.h"
sbit rst=P3^6;
unsigned char table[]={2,3,4,5,6,7,8,9};
void main()
{
rst=0;
while(1)
{ display_tale(table);
}
}
- 基于TMS320C62X DSP的混合编程研究(07-12)
- 语音识别及其定点DSP实现(06-14)
- C语言编译过程中的错误分析(08-25)
- 单片机的图形化编程方法分析(05-03)
- 基于数字信号处理器的汇编程序优化方案(03-24)
- C语言在FPGA上实现DSP的解决方案(04-09)