模块化编程

当单片机需要控制的模块越多,所有代码集中在main函数中的话就会非常冗余,且难以维护,所以,将不同模块的控制代码可以划分模块来进行控制,主函数的主要作用就是调用各个模块的接口就好,便于维护和阅读

•模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include “XXX.h”文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等

•.c文件:函数、变量的定义

•.h文件:可被外部调用的函数、变量的声明

以下为,转模块化的一个例子

原代码:

#include <REGX52.H>

unsigned char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};

void Delay(unsigned int xms)
{
	unsigned char i, j;

	while(xms--)
{
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
}
}


void NiXie(unsigned char Location,Number)
{
	switch(Location)
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=num[Number];
	Delay(1);
	P0=0x00;
}

void main()
{
	while(1){
	NiXie(1,1);
	NiXie(2,2);
	NiXie(3,3);
	}
}

声明文件.h的预编译,预处理需要如图头文件:

模块化编程后的代码和结构:

main.c

#include <REGX52.H>
#include "Delay.H"
#include "NiXie.H"

void main()
{
	while(1){
	NiXie(1,1);
	NiXie(2,2);
	NiXie(3,3);
	}
}

Delay.c

void Delay(unsigned int xms)		//@12.000MHz
{
	unsigned char i, j;

	while(xms--)
{
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
}
}

Delay.h

#ifndef _DELAY_H_
#define _DELAY_H_

void Delay(unsigned int xms);
#endif

NiXie.c

#include "Delay.h"
#include <REGX52.H>
unsigned char num[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x00};


void NiXie(unsigned char Location,Number)
{
	switch(Location)
	{
		case 1:P2_4=1;P2_3=1;P2_2=1;break;
		case 2:P2_4=1;P2_3=1;P2_2=0;break;
		case 3:P2_4=1;P2_3=0;P2_2=1;break;
		case 4:P2_4=1;P2_3=0;P2_2=0;break;
		case 5:P2_4=0;P2_3=1;P2_2=1;break;
		case 6:P2_4=0;P2_3=1;P2_2=0;break;
		case 7:P2_4=0;P2_3=0;P2_2=1;break;
		case 8:P2_4=0;P2_3=0;P2_2=0;break;
	}
	P0=num[Number];
	Delay(1);
	P0=0x00;
}

NiXie.h

#ifndef _NIXIE_H_
#define _NIXIE_H_

void NiXie(unsigned char Location,Number);
#endif

文件结构:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇