【51 单片机入门到进阶】10 入门:51单片机模块化编程
一什么是模块化设计把一个大程序按功能拆成一个个独立的小文件、小函数分开写、分开管理。例如led.c/led.h→ 负责 LEDkey.c/key.h→ 负责按键uart.c/uart.h→ 负责串口hc_sr04.c/hc_sr04.c→ 负责超声波main.c→ 只负责整体逻辑这就叫模块化。二为什么要模块化设计1. 51 单片机资源少、程序容易乱51 单片机程序虽然不大但一旦功能变多LED按键定时器串口显示屏传感器所有代码堆在main.c里 →几百行、几千行混在一起→根本没法维护。2. 不模块化 → 改一个地方全程序崩新手最常见问题我只想改个 LED结果整个程序不运行了。因为代码混在一起、互相干扰。3. 不模块化 → 无法复用写好的 LED 驱动、按键驱动下次做新项目不能直接复制用必须重新写。三模块化设计的好处1. 结构清晰一眼看懂程序不用翻几百行代码看文件名就知道功能led → 灯key → 按键uart → 串口hc_sr04 → 超声波2. 易于维护改哪里点哪里不会影响其他功能。想改 LED → 只动 led.c想改按键 → 只动 key.c3. 代码可复用写好一次驱动LEDKEYDs18b20HC-SR04以后任何 51 项目直接复制粘贴就能用,不用重复造轮子。4. 程序可读性强别人拿到你的代码立刻能看懂这就是工程师规范。5. 便于升级功能比如想换一种 OLED 屏只需要替换oled.c主程序完全不用改。6. 养成正规编程习惯从 51 开始模块化不是 51 专属是STM32、Arduino、Linux、嵌入式底层 通用标准51 学会模块化以后学任何单片机都轻松。四51单片机模块程序化设计结构(以蜂鸣器工程为例)驱动蜂鸣器/ ← 工程根目录 ├── 驱动蜂鸣器.uvproj ← Keil工程主文件双击打开工程 ├── 驱动蜂鸣器.uvopt ├── 驱动蜂鸣器.uvgui.Administrator ├── 驱动蜂鸣器_Target 1.cfg ├── STARTUP.A51 ← 51单片机启动文件系统默认不动 ├── Apps/ ← 【驱动程序文件夹】所有硬件驱动 ├── User/ ← 【主程序文件夹】主逻辑、公共函数 ├── Listings/ ← 【编译输出文件夹】编译生成的列表文件自动生成 └── Objects/ ← 【编译输出文件夹】编译生成的hex/obj文件自动生成Apps/ ├── App.h ← 【驱动总头文件】汇总所有驱动头文件 ├── led/ ← LED驱动模块 │ ├── led.c │ └── led.h ├── key/ ← 按键驱动模块 │ ├── key.c │ └── key.h ├── buzzer/ ← 蜂鸣器驱动模块本工程核心 │ ├── buzzer.c │ └── buzzer.h ├── uart/ ← 串口驱动模块可选 │ ├── uart.c │ └── uart.h └── ... ← 其他驱动按需添加User/ ├── main.c ← 主程序入口业务逻辑 ├── main.h ← 51头文件重命名替代reg51.h统一管理 ├── Public.c ← 公共函数延时、通用工具等 └── Public.h ← 公共函数头文件、全局宏定义
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2510849.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!