当前位置: 首页 > news >正文

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

文章目录

  • 前言
  • 一、sys文件创建和路径添加
    • 1.创建文件夹添加文件夹路径
  • 二、sys文件编写
    • 1.sys.h
    • 2.sys.c
  • 三、模块化的测试
  • 总结


前言

今天将为大家讲解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站

相关文章:

  • Python学习-----起步2(变量与转义符)
  • Java程序设计实验3 | 面向对象(上)
  • 优秀的代码最终选择if else,还是switch case
  • Openharmony的编译构建--进阶篇1
  • 每天一道大厂SQL题【Day02】电商场景TopK统计
  • EMT4J详细介绍与使用,帮你找到Java版本升级带来的问题,让你在项目jdk升级不在头疼
  • 第2章:使用CSS定义样式
  • 【数据结构】动图详解单向链表
  • MySQL基础篇笔记
  • Vue3现状—必然趋势?
  • uniapp获取支付宝user_id - 支付宝提现 - 登录授权 - APP支付宝登陆 - H5支付宝授权
  • Promise详解与手写实现
  • 【C++】类型转换
  • 关于栈和队列
  • 网络知识详解之:网络攻击与安全防护
  • Java快速上手Properties集合类
  • leetcode:43. 字符串相乘(附加一些C++string其他小练习)
  • 游戏SDK(三)架构设计之代码实现1
  • 射频识别技术|期末考试知识点|重点题目|第1讲_RFID
  • C++中拷贝构造函数、拷贝赋值运算符、析构函数、移动构造函数、移动赋值运算符(三/五法则)
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读