51单片机最强模块化封装(1)

举报
yd_274589494 发表于 2023/07/27 17:40:39 2023/07/27
【摘要】 @TOC 前言今天将为大家讲解51单片机的模块化封装,为什么要讲这个模块化封装呢?模块化封装将提高我们代码的可移植性和可复用性,方便我们后续项目的进行。后续我们将推出几个51单片机项目:1.智能密码锁2.温控风扇3.环境监测系统大家想做什么项目也可以联系我私信我。 一、sys文件创建和路径添加 1.创建文件夹添加文件夹路径在工程目录下我们建立一个名为sys的文件夹。在文件夹下我们添加sys....

@TOC


前言

今天将为大家讲解51单片机的模块化封装,为什么要讲这个模块化封装呢?模块化封装将提高我们代码的可移植性和可复用性,方便我们后续项目的进行。
后续我们将推出几个51单片机项目:
1.智能密码锁
2.温控风扇
3.环境监测系统
大家想做什么项目也可以联系我私信我。

一、sys文件创建和路径添加

1.创建文件夹添加文件夹路径

在工程目录下我们建立一个名为sys的文件夹。
在这里插入图片描述
在文件夹下我们添加sys.c和sys.h
在这里插入图片描述
将sys文件夹添加进工程代码,然后添加文件夹路径。
这里可以添加一个名为sys的文件夹。
在这里插入图片描述
在这里插入图片描述
然后进行编译测试添加是否成功。
编译之前我们需要先勾选此项,不然编译过后无法生成hex文件。
在这里插入图片描述

二、sys文件编写

1.sys.h

首先我们先编写一个sys头文件。
在头文件的开头和结尾处加上:
#ifndef __SYS_H
#define __SYS_H

#endif
这样的宏。
使用这样的宏可以防止头文件的重复包含。

sys头文件处我们包含了<reg52.h>的头文件,和重定义了unsigned char和unsigned int类型变量。
重定义这两个变量可以方便我们以后调用时的编写代码。
sys中还包含了delayms ms级延时函数,延时函数实现原理这里我就不多说。大家可以看我之前的文章都有讲到。
原理

/*此宏作用:防止头文件重复包含*/
#ifndef __SYS_H
#define __SYS_H

#include <reg52.h>

/*
	类型重定义
	当以后使用到unsigned char 和 unsigned int时可以使用u8和u16代替
*/
typedef unsigned char u8;
typedef unsigned int u16;


/*
	延时函数
	延时单位:ms
*/
void delayms(u16 ms);


#endif


2.sys.c

我们开始编写sys.c文件,sys.c文件主要就是实现delayms这个函数,相信大家学习过C语言都明白这样写的作用,这里就不多展开说明。

#include "sys.h"

void delayms(u16 ms)
{
	u8 i;

	while(ms--)
	{
		for(i=0;i<113;i++);
	}	
}

三、模块化的测试

每当我们编写好一个模块的时候都需要进行测试调试,假如不进行测试的话那么以后出现了问题再来修改就比较麻烦了。所以我们要养成写一个模块测试一个模块的好习惯。

我们在main.c中包含"sys.h",调用里面定义的u8,u16,delayms进行测试,编译发现无错误说明测试成功。

#include "sys.h"


void main(void)
{
	u8 num;
	u16 data1;
	delayms(1000);
	/*主函数*/
	while(1)
	{

	}
	
}

总结

后期将持续更新模块化文章请大家多多点赞,多多留言评论。
后期将会出对应视频提供大家学习:
B站地址:B站

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。