首页 > 编程语言 >51单片机之模块化编程

51单片机之模块化编程

时间:2024-08-08 22:24:01浏览次数:15  
标签:文件 头文件 模块化 代码 编程 51 Delay 单片机

一、模块化编程与传统方式编程的区别

传统方式编程:在这种编程方式中,所有的函数通常都被放置在同一个文件main.c中。当项目中使用的模块较多时,这个文件中会包含大量的代码,导致代码难以组织和管理,也影响了编程者的思路。这种方式缺乏清晰的结构划分,使得代码的可读性和可维护性降低。

模块化编程:模块化编程则通过将程序分解成多个独立且可互换的模块来提高代码的灵活性、可维护性和复用性。每个模块都包含执行特定功能的所有必要代码,并且可以被独立地开发、测试和维护。模块之间的代码被放在不同的.c文件中,而在.h(头文件)中提供外部可调用函数的声明。其他模块或文件需要使用某个模块的功能时,只需通过#include指令包含相应的头文件即可。这种方式使得代码结构更加清晰,易于管理和维护。

模块化编程在代码结构与组织、代码复用性、代码可读性与可维护性以及团队协作等方面都显著优于传统方式编程。因此,在现代软件开发中,模块化编程已经成为一种广泛采用的编程范式。

二、 模块化编程

2.1 模块化编程框图

2.2 模块化编程注意事项 

.c文件:存放的是函数、变量的定义(可运行的代码)

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

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

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

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

三、C预编译

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

四、模块化延时函数和数码管

4.1 < >与" "的区别

使用< >包含头文件时,预处理器会在标准库路径中查找该头文件。这些路径通常是由编译器或环境变量指定的,用于存放标准库的头文件。如果你使用的是标准库中的头文件(如stdio.hstdlib.h等),就应该使用尖括号。

使用" "包含头文件时,预处理器会首先在包含当前源文件的目录中查找该头文件,如果未找到,则继续在标准库路径中查找。这允许开发者编写自己的头文件,并且在使用时,可以通过在相同目录下放置头文件来避免指定复杂的路径。如果头文件的名称与标准库中的头文件冲突,使用双引号可以避免潜在的混淆。

总结:

使用尖括号< >主要是为了包含标准库中的头文件。

使用双引号" "可以包含用户自定义的头文件,或者当你想覆盖标准库中的头文件时使用(尽管这种做法不推荐)。

4.2 步骤

1、新建好工程后添加main.c文件,写出基本框架

2.像添加main.c文件一样新建一个Delay.c文件 

3.在Delay.c文件中加入Delay函数

 

4.创建Delay.h文件

 

5.添加好后左侧任务栏没有出现Delay.h(已经存放在了main.c文件的文件夹内,编译时可以找到),可以将其添加进当前工程目录中 方便管理,此步骤也可以跳过

 

 6.编写Delay.h文件

7.重复上述步骤添加数码管的.c和.h文件

 

 8.这样只需要在main函数中添加上头文件直接调用就好了

标签:文件,头文件,模块化,代码,编程,51,Delay,单片机
From: https://blog.csdn.net/2302_77770138/article/details/141033794

相关文章

  • 1392、STM32单片机温湿度检测阈值报警4个继电器加4个负载风扇等无线蓝牙远程(程序+原
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选......
  • CF1514D Cut and Stick 题解
    不知道会不会更不好的阅读体验题目的关键步骤为求出区间绝对众数(频率高于\(\left\lceil\frac{len}{2}\right\rceil\))的出现次数,本文仅仅对这一问题进行探讨,剩余的解题步骤不难理解,可以参考其他题解。解法1考虑一个随机化的解法,从区间中随\(40\)个数,假定其为区间绝对众......
  • 【CTFWP】ctfshow-web351-358
    文章目录前言web351web352web353web354web355web356web357web358前言ctfshow的web入门的ssrf靶场web351<?phperror_reporting(0);highlight_file(__FILE__);$url=$_POST['url'];$ch=curl_init($url);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,......
  • springboot仓库仓储管理系统-计算机毕业设计源码14514
    目录1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.1.1技术可行性2.1.2经济可行性2.1.3操作可行性2.1.4法律可行性2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添......
  • (未完工)Contest7516 - 平面图
    Contest笔记欧拉定理欧拉定理连通平面图满足\(V-E+F=2\)。有\(C\)个连通块的平面图满足\(V-E+F=C+1\)。简单连通平面图满足\(E\le3V-6\)。重要:平面图满足\(E=O(V)\)。可以用于证明\(K_5\)不是平面图。一个\(V\ge3\)的简单连通平......
  • Windows远程桌面(RDP)错误代码:0x516
    错误代码0x516和错误信息“你已断开连接,因为已与远程电脑建立了另一个连接”通常表示在尝试建立远程桌面连接时,目标计算机上已经有一个远程桌面会话活跃。检查隐藏的远程会话如果你有管理员权限,你可以通过命令行工具query和logoff来结束会话。即使看起来没有活......
  • 51单片机的复位电路和晶振电路设计
            51单片机是一种非常常见的单片机,51单片机具有高性能和稳定性。其应用范围广泛。在学习和使用51单片机时,最小系统是必不可少的。晶振电路和复位电路是单片机外围电路中至关重要的部分,它们保证了系统的稳定运行。        晶振电路的主要作用是提供单片......
  • Jmeter SHA512接口加密测试
    前言:最近,我遇到一些测试接口必须传入经过SHA512加密后的sign签名,并且签名有1小时时间限制,即签名不是一成不变超1小时就会过期,这导致在测试过程中就得频繁手工去更新签名。其实Jmeter是有提供函数去进行自动转换的,以下详解SHA512加密,可以去网上搜索SHA512在线转换 1、已知,接口......
  • 模块化叙事的演变:DeFi借贷开发的模块化转型
    随着区块链技术的不断发展,去中心化金融(DeFi)正经历一场深刻的变革。模块化借贷作为这一变革的重要部分,正逐渐成为加密金融领域的焦点。本文将探讨模块化借贷的起源、演变及其未来发展方向。一、模块化的起源模块化区块链的概念源自2018年由MustafaAlbasan和VitalikButerin......
  • 32单片机
    1STM32&ARM介绍MDK下载支持包安装破解stlink驱动安装2程序安装startlibrarymain设置中调用库函数文件调试选择stlink编译runandrestart3GPIOGPIO寄存器端口配置低寄存器+端口配置高寄存器端口输入寄存器保留+低16端口输出寄存器保留+低16端口位设置/......