51单片机——模块化编程

news/2024/9/15 1:12:07/ 标签: 51单片机, 嵌入式硬件, 单片机

1、模块化编程介绍

传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路。

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

2、模块化编程框图

3、模块化编程注意事项

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

.h文件:可被外部调用的函数、变量的声明

任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)

使用到的自定义函数的.c文件必须添加到工程参与编译

使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)

4、C预编译

C语言的预编译以#开头,作用是在真正的编译开始之前,对代码做一些处理(预编译)

此外还有#ifdef,#if,#else,#elif,#undef等

5、模块化后的代码

该代码由上一节(数码管控制)修改而来

编译无错误

 


http://www.ppmy.cn/news/1519429.html

相关文章

Leetcode 3272. Find the Count of Good Integers

Leetcode 3272. Find the Count of Good Integers 1. 解题思路2. 代码实现 题目链接:3272. Find the Count of Good Integers 1. 解题思路 这一题我思路上是比较暴力的,就是典型地分步骤执行: 找出所有的可能构成回文的长度为n的字符组合…

.NetCore发布到IIS

一:安装sdk(下载 .NET 8.0 SDK (v8.0.302) - Windows x64 Installer) 与donet Runtime(.NET Downloads (Linux, macOS, and Windows))选择对应的版本下载 二:解决问题:HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面&#x…

快速回顾-CSS

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS66</title><style>/* 选择器 *//* h4…

云计算第二阶段---DBA Day8-Day9

DBA Day8 该阶段的2天内容,都会和数据库中间件,集群配置有关. 什么是中间件&#xff1f; 通俗来说&#xff0c;就是在正式文件内容从客户端发送或获取请求时&#xff0c;在传播过程中地点中间商&#xff0c;负责管理请求&#xff0c;并对其进行分类。 环境准备: 准备…

计算机网络概述(协议层次与服务模型)

目录 1.协议层次 2.服务模型 1.协议层次 层次化方式实现复杂网络功能&#xff1a; 将网络复杂的功能分成明确的层次&#xff0c;每一层实现了其中一个或一组功能&#xff0c;功能中有其上层可以使用的功能&#xff1a;服务本层协议实体相互交互执行本层的协议动作&#xff0…

Force Yc 第九引导公告页HTML源码

源码介绍 Force Yc 第九引导公告页HTML源码 此源码可以播放自己的音乐 - 视频 背景修改:dist\images 名字:bg.jpg 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面…

数智化粮仓综合监控管理系统设计方案WORD-2023

关注智慧方案文库&#xff0c;学习9000多份智慧城市智慧医院&#xff0c;智慧水利&#xff0c;智能制造&#xff0c;数字化转型&#xff0c;智慧工厂&#xff0c;智慧矿山&#xff0c;智慧交通&#xff0c;智慧粮仓&#xff0c;工业互联网&#xff0c;数字孪生......持续更新热…

【AI】自动驾驶的分级

国际汽车工程学会&#xff08;SAE&#xff09;自动驾驶标准将汽车驾驶技术分为从L0&#xff08;无驾驶自动化&#xff09;至L5&#xff08;完全驾驶自动化&#xff09;的6个级别&#xff0c;通常称L3及以上级别的自动驾驶为高级别自动驾驶&#xff0c;车辆驾驶任务的主导权由驾…

GPT-SoVITS-WebUI 初体验

一、安装 conda create -n GPTSoVits python3.9 # …

心法利器[117] | 算法技术设计思考:迭代的思维方式

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2023年新的文章合集已经发布&#xff0c;获取方式看这里&#xff1a;又添十万字-CS的陋室2023年文章合集来袭&#xff0c;更…

【Qt】项目打包发布

Relsease&#xff1a;发布版本&#xff0c;编译时对应用程序的速度进行了优化&#xff0c;运行时比Debug速度快很多&#xff0c;对用户友好。 Debug&#xff1a;调试版本&#xff0c;包含调试信息&#xff0c;比较冗余&#xff0c;编译速度比较慢&#xff0c;一般用于编写代码时…

智菜谱推|基于SprinBoot+vue的智能菜谱推荐系统(源码+数据库+文档)

智能菜谱推荐系统 基于SprinBootvue的智能菜谱推荐系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 管理员功能模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂…

日常刷题(24)

1. 拼接最大数 1.1. 题目描述 给你两个整数数组 nums1 和 nums2&#xff0c;它们的长度分别为 m 和 n。数组 nums1 和 nums2 分别代表两个数各位上的数字。同时你也会得到一个整数 k。 请你利用这两个数组中的数字中创建一个长度为 k < m n 的最大数&#xff0c;在这个必…

sqlite3的db.serialize方法:确保数据库操作串行化的利器

在Node.js中&#xff0c;sqlite3是一个广受欢迎的轻量级数据库库&#xff0c;它提供了一个简洁的API来与SQLite数据库进行交互。在进行数据库操作时&#xff0c;为了确保操作的串行化执行&#xff0c;避免并发问题&#xff0c;sqlite3提供了db.serialize方法。本文将深入解析db…

springboot中分页插件的使用

安装依赖 这里有个版本的报错&#xff0c;循环依赖的问题&#xff0c;大家可以去具体查下&#xff0c;我这是sp3,所以要选择高点的版本&#xff0c;否则启动会报错 <!--mybatis起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId>&l…

c/c++基础及类和对象汇总

目录 c基础 extern关键字及c中&#xff08;隐式类型转换时&#xff09;的引用 c中的引用&#xff08;&&#xff09;及&做返回值问题 c语言中的宏函数及c的内联函数及auto及NULL 计算类的大小及深入理解this指针&#xff08;深入浅出&#xff09; c中的const权限及s…

C# 反射和特性练习代码

反射 using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Metadata.Ecma335; using System.Runtime;class Test {private int b;pub…

ARM/Linux嵌入式面经(三二):百度

文章目录 RTOS了解吗,展开讲一下对RTOS的线程和任务管理相关的有了解吗RTOS的线程和任务管理相关了解追问有深度的技术问题及答案vivado这个硬件平台怎么用的Vivado硬件平台使用了解追问有深度的技术问题及答案项目系统架构、配置是怎样的项目系统架构与配置系统架构配置追问有…

WPF中使用Echarts显示图表

在WPF中使用ECharts来显示图表&#xff0c;你需要将ECharts嵌入到WPF应用程序中。我们这里介绍两种方法显示图表&#xff1a; 目录 一、ECharts是一个基于JavaScript的开源可视化图表库&#xff0c;因此我们需要使用WebView控件来承载一个嵌入式浏览器&#xff0c;这样就可以…

JVM 性能分析 —— CMS 老年代并发 GC 触发条件与压缩式 GC (升级为 Full GC)触发条件

文章目录 CMS 触发老年代 GC 条件foreground collector&#xff08;前台收集&#xff09;background collector&#xff08;后台收集&#xff09; MSC&#xff08;mark-sweep-compact 压缩式 GC&#xff09; CMS 触发老年代 GC 条件 先看看触发老年代GC的条件。CMS GC 在实现上…