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.rhkb.cn/news/408795.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维学习————nginx2-配置详解及负载均衡

目录 一、配置文件详解 1.1、结构 1.2、重要配置解释 1.3、详细配置 全局配置 Events HTTP 服务器配置 server虚拟主机配置 location URL匹配配置 1.4、完整配置 二、负载均衡 2.1、概念 2.2、集群规划及实现 2.3、具体实现 2.3.1、克隆 2.3.2、修改tomcat1配…

MySQL分区表

1.分区算法 MySQL提供4种分区算法:取余:Key,hash 条件:List,range 。 参与分区的参数字段需要为主键的一部分。 (1)KEY – 取余 ,按照某个字段进行取余 分成5个区,就…

力扣: 设计链表

文章目录 需求代码结尾 需求 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则还需要属性 p…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代,电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络,还是订阅更新,我们几乎每天都在使用电子邮件。但随着账户数量的增加,管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验?Mailbird…

关于solidity知识总结

借此CSDN博客笔记来巩固一下对solidity知识的认识 1.helloworld // SPDX-License-Identifier:MIT pragma solidity ^0.8.0; contract First {string public hello "HelloWorld"; } public 修饰符自动创建一个get()函数用于返回内容 类似于 // SPDX-License-Ident…

策略产品 ①算法逻辑

目录 一、机器学习与AI的关系 二、机器学习全流程 1. 问题定义 2. 数据处理 3. 特征工程 4. 模型训练 5. 模型评估 6. 模型应用 机器学习是AI的关键技术之一,是指机器从历史数据中学习规律,从而提升系统某个性能度量的过程。这篇文章,我们在作…

78 Linux libusb库USB HID应用编程笔记

1 前言 这几天搞另外一个项目,基于Ubuntu开发一个小的应用程序,就是通过USB HID与设备通信。因此需要在Linux环境编写对应USB HID通信应用。 目前libusb库已经很好的支持USB相关应用的开发,库中提供了丰富的USB接口,用户可以直接调…

做空股指期货一手多少钱?

股指期货的保证金比例是12%-15%不等,所以做空一手股指期货的保证金最少是要十几万元,部分平台两万。关于做空一手股指期货的具体金额,这并非固定不变,而是会根据市场的实时价格、合约的乘数以及交易所的规定等因素而有所变动。 股…

如何使用ssm实现开放式教学评价管理系统+vue

TOC ssm121开放式教学评价管理系统vue 第1章 绪论 1.1 背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于开放式教学评价管理系统所牵扯的管理及数据保存都是非常多的,例如个人中心、教师管理、学生管理、游客管理、评价信息管理、综合评…

HCIP第五次作业

一、实验拓扑 二、实验要求 1.如图连接网络,合理规格IP地址,AS200内IGP协议为OSPF 2.R1属于AS 100:R2-R3-R4小AS 234 R5-R6-R7/AS567,同时声明大AS 200,R8属于AS300 3.R2-R5 R4-R7之间为联邦EBGP邻居关系 4.R1-R8之间通信 三、实…

第133天:内网安全-横向移动域控提权NetLogonADCSPACKDC永恒之蓝

案例一:横向移动-系统漏洞-CVE-2017-0146 这个漏洞就是大家熟悉的ms17-010,这里主要学习cs发送到msf,并且msf正向连接后续 原因是cs只能支持漏洞检测,而msf上有很多exp可以利用 注意msf不能使用4.5版本的有bug 这里还是反弹权…

基于STM32开发的智能风扇控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化温度与湿度监测风扇控制与状态显示Wi-Fi通信与远程控制应用场景 家庭与办公室的温控风扇管理工业环境的智能通风控制常见问题及解决方案 常见问题解决方案结论 1. 引言 智能风扇控…

react笔记(React18)

以下笔记可能毫无章法,仅供个人学习记录使用。 关于状态提升: 状态提升适用于兄弟组件之间传递数据,共享状态,其实就是把两个兄弟组件要共同使用的数据存放到共同的父组件中,称状态提升。 关于context跨层级组件通信…

Vodafone 推出了与 Wi-Fi 竞争的基于树莓派私人5G技术

随着全球5G网络的逐步推出,在其过程中遇到了可预见的起起伏伏,并且蜂窝技术也开始进入另一个无线技术 Wi-Fi ,并且已经占据的市场。私有5G网络(即个人或公司建立自己的全设施蜂窝网络)如今正在寻找曾经属于Wi-Fi的唯一…

openai whisper使用

whisper使用 介绍 Whisper是一种通用的语音识别模型。它是在大量不同音频数据集上训练的,也是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。 GitHub:https://github.com/openai/whisper 论文链接:https://arx…

SQL Server 2017上服务端设置强制加密启用SSL

在数据库服务端设置,强制所有客户端使用 SSL,设置完后,后续客户端所有连接,都将以密文传送,不论客户端是否指定安全连接(即EncryptTrue/False) 一、服务端强制加密使用 SSL 1.在数据库服务器上…

微服务事务管理

目录 一、分布式事务问题 1、本地事务 2、分布式事务 3、分布式事务问题 二、理论基础 1、CAP定理 (1)一致性 (2)可用性 (3)分区容错 (4)矛盾 2、BASE理论 3、解决分布式…

Java学习_21_多线程JUC

文章目录 前言多线程并发与并行多线程的实现方式Thread类Runnable接口Callable接口和Future接口 Thread类的相关方法线程对象线程优先级守护线程出让线程/礼让线程插入线程/插队线程 线程的相关问题生命周期安全问题Lock锁死锁等待唤醒机制(生产者和消费者&#xff…

Flex的基本使用+综合案例

组成 弹性盒子没有设置高&#xff0c;就会自动拉伸 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&q…

GCB | 首次揭示!气候变化对常绿和落叶植物物候差异化影响的机制

气候变化引起的植物物候改变已对全球范围内生物多样性和生态系统产生重大影响&#xff08;Nature高引文章 | 北京大学朴世龙院士等&#xff1a;全球变暖对植被物候的影响及其机制&#xff1b;Nature Ecology & Evolution | 南京大学张永光教授团队揭示延长的植被物候期受CO…