51单片机-模块化编程

作者:Whappy

时间:2024.8.30

目的:决战51

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等

个人理解模块化编程思路:

就像我们说的一个程序等于算法加数据结构,而针对于模块化编程,就是让我们的代码看起来更有层次化,,这里我们就定义了模块化程序的思路,即一个功能实现模块(模块内可能包含小模块),但我们想要把这个模块(例如一个LCD1602显示屏模块)集成化,模块化,就是利用一个点c(lcd1602.c)文件配套一个点h(lcd1602.h)文件,其中,lcd1602.c文件是实现其所有内部想要实现的功能,如包含lcd1602的驱动代码和lcd1602的子功能代码,则lcd1602.h文件就是将lcd1602.c中的所有子模块进行声明(函数声明),最后我们调用该lcd1602模块时,只需要在我们的函数中调用其头文件(lcd1602.h),即可使用lcd1602中的功能。(甚至我们都不需要知道理lcd1602是怎么实现的,我们仅仅需要知道该代码中.h文件函数声中需要的参数即可)。一个点h文件就是外部文件调用该点c文件的接口,在我们需要调用该函数内部功能时,我们只需要调用该函数内部点h文件的即可,(一个点c文件包含一个点h文件必定是组合),点c文件是实现,点h文件是声明,点c文件内的函数实现。(功能实现必须在点h中声明,这样外部调用该头文件才能使用)

我还是那就话,一个嵌入式编程者的最高境界就是自己不写任何一代码,就能把所需要的功能实现。

听君一席话,胜读十年书。

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

.h文件:可被外部调用的函数、变量的声明 任何自定义的变量、函数在调用前必须有定义或声明(同一个.c) 使用到的自定义函数的.c文件必须添加到工程参与编译 使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

模块化

main.c    (实现我们想要的的功能)

#include <REGX52.H>
#include "Delay.h"
#include "Nixie.h"


void main(void)
{
	
	while(1)
	{
		Nixie(1,1);
		Delay1ms(500);
		Nixie(2,2);
		Delay1ms(500);
		Nixie(3,3);
		Delay1ms(500);
		Nixie(4,4);
		Delay1ms(500);
		Nixie(5,5);
		Delay1ms(500);
		Nixie(6,6);
		Delay1ms(500);
		Nixie(7,7);
		Delay1ms(500);
		Nixie(8,8);
		Delay1ms(500);
	}
}


Delay.c

#include "intrins.h"

void Delay1ms(unsigned int xms)		//@11.0592MHz
{
	unsigned char i, j;
	
	while(xms--)
	{
		_nop_();
		i = 2;
		j = 199;
		do
		{
			while (--j);
		} while (--i);
	}
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__



void Delay1ms(unsigned int xms);








#endif

Nixie.c

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



unsigned char NixieTable[] = {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 = NixieTable[Number];
	Delay1ms(500);
	P0 = 0X00;

			
}

Nixie.h

#ifndef __Nixie_H__
#define __Nixie_H__



void Nixie(unsigned char Location,Number);




#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值