51单片机应用开发(进阶)---模块化编程

实现目标

1、掌握.h 文件的格式、extern 的用法;

2、握模块化编程方法步骤;

3、具体实现:(1)提供一个C文件,将其按照功能模块进行模块化。


一、为什么要进行模块化编程?

传统的编程方式:

        所有的函数均在main.c里,若使用的模块比较多,则一个文件内会有很多代码,不利于代码的组织和管理。而且很影响开发人员的思路。  

模块化编程:

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

二、预备知识

2.1  .c文件

存放的是函数、变量的定义

2.2  .h文件

可被外部调用的函数、变量的声明

2.3 预编译

三、模块化编程主要步骤

0、文件夹的创建

建一个文件夹装工程,再新建一个文件装各模块文件。

1、新建一个51单片机工程(参照以前)

建好工程后,新建两个组:USER、和DRIVER。

2、新增与模块对应的 .h  .c 文件

将main.c 添加至USER文件夹;将delay.c 添加至DRIVER文件夹。

(1) .h  文件格式

#ifndef  _DELAY_H_
#define  _DELAY_H_ 

void Delay(unsigned int xms);  
 
#endif

(2) .c  文件格式

#include "delay.h"

void Delay(unsigned int xms)        
{
    while(xms--)
    {
        unsigned char i, j;
        i = 2;
        j = 239;
        do
        {
            while (--j);
        } while (--i);    
    }
}

(3)主函数C文件

#include <REG52.h>
#include "delay.h"

void main()
{
    while(1)
    {
        Delay(10);
    }
}

3、将各 .c文件添加至工程的组

将main.c 添加至USER组;将delay.c 添加至DRIVER组。

4、给有.h文件的组添加路径包含

如果不给.h 文件的路径包含进来,将会出现下面的错误。

 

四、练习

给定下面程序,请参照上面的步骤,将其模块化。要求:(1)创建USER、和DRIVER两个组;(2)新建main.c/delay.c/ delay.h/seg.c /seg.h  。

#include <REGX52.H>

sbit A1 = P2^2;
sbit B1 = P2^3;
sbit C1 = P2^4;

unsigned char  gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};							
void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 4;
	j = 129;
	k = 119;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void  main()
{
	int i;
	C1 = 0;B1 =0;A1 =0;//数码管1 工作

	while(1)
	{
		
	  for(i = 0;i < 16;i++)
      {
		 P0 = gsmg_code[i]; //显示
		 Delay500ms();						
      }
	  Delay500ms();	
	  for(i = 15;i >= 0;i--)
      {
		 P0 = gsmg_code[i]; //显示
		 Delay500ms();
      }		
	}
}

五、实验效果

六、仿真实现


总结

上一篇:FFmpeg 4.3 音视频-多路H265监控录放C++开发十四,总结编码过程,从摄像头获得数据后,转成AVFrame,然后再次转成AVPacket,


下一篇:LLMs之Code:Qwen2.5-Coder的简介、安装和使用方法、案例应用之详细攻略-Qwen2.5-Coder的案例应用