了解模块化编程
1.首先了解一下传统方式编程和模块化编程
传统方式编程:所有的函数均放在main.c里,若使用的模块比较多,则一个文件内会有很多的代码,不利于代码的组织和管理,而且很影响编程者的思路 模块化编程:把各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数的声明,其它.c文件想使用其中的代码时,只需要#include "XXX.h"文件即可。使用模块化编程可极大的提高代码的可阅读性、可维护性、可移植性等
2. 模块化编程注意事项
.c文件:函数、变量的定义
.h文件:可被外部调用的函数、变量的声明
任何自定义的变量、函数在调用前必须有定义或声明(同一个.c)
使用到的自定义函数的.c文件必须添加到工程参与编译
使用到的.h文件必须要放在编译器可寻找到的地方(工程文件夹根目录、安装目录、自定义)
3.了解C语言的预编译
代码部分
接下来写代码
这里需要用到上一章节的代码,将其复制过来,在此之前要新建一份文件夹,将我们需要进行模块化的部分单独分离出来,之后在主函数中再引用预编译即可
1.实现亮灯模块化
养成习惯:在新建工程后写出以下代码,这是函数主体
#include
void main()
{
while(1)
{
}
}
2.延时部分
Delay.c文件复制即可
Delay.h文件按照格式写,如下
#ifndef _DELAY_H_//注意ifndef和define后面要有空格才不会有警告
#define _DELAY_H_
void Delay(unsigned int xms);
#endif
3.在main.c中调用延时函数
#include "Delay.h"
while循环中如下
P2_0=1; //熄灭
Delay(500);
P2_0=0; //点亮
Delay(500);
4.同理实现数码管显示
添加Nixie.c.h文件
while循环如下
Nixie(1,1);
Nixie(2,2);
Nixie(3,3);
Nixie(4,4);
Nixie(5,5);
Nixie(6,6);
注:在写.h文件的声明时后面要加分号
关键字:51单片机
引用地址:
51单片机 模块化编程
推荐阅读最新更新时间:2024-11-16 22:59
80c51是几位单片机 80c51单片机有几个中断源
80c51是几位单片机 80C51是一种8位微处理器,也被称为8051,由Intel公司推出。它是最早的商用单片机之一,由于它的简单易用、灵活可靠,被广泛应用于许多嵌入式系统中。在80C51系列中,最常见的型号包括AT89C51和AT89S52等。 80c51单片机寻址范围有多少 80C51单片机的寻址范围取决于其具体的型号和存储器结构。在最常见的AT89C51和AT89S52型号中,其寻址范围如下: 内部RAM寻址范围:0x00-0x7F(128字节) 内部ROM寻址范围:0x0000-0xFFFF(64KB) 特殊功能寄存器(SFR)寻址范围:0x80-0xFF(128字节) 外部扩展RAM
[单片机]
51单片机开发之中断
4.2 中断 4.2.1 中断介绍 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完完后,再回到原来被中断的地方,继续原来的工作,这样的过程称为中断,实现这种功的部件称为中断系统,请示CPU中断的请求源称为中断源。 微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别,CPU总是先响应优先级别最高的中断请求。 当CP
[单片机]
MCS51单片机调用指令LCALL addr16 ,ACALL addr11的使用介绍
LCALL addr16 ;长调用 ACALL addr11 ;绝对调用 1.LCALL addr16 ;转移范围64KB,不影响标志位。执行中自动完成如下过程: (PC) (PC) + 3 (SP) (SP)+ 1 ((SP)) (PC7 ~ 0), 保护断点地址低字节; (SP) (SP)+ 2 ((SP)) (PC15 ~ 8),保存断点地址高字节; (PC) addr16 ,目的地址送PC,转子程序。 例、设(SP)= 07H,(PC)= 2100H,子程序首地址为3456H,执行:
[单片机]
51单片机语音+温度控制的源码
#include STC12C5A.H #define uchar unsigned char #define uint unsigned int uchar index; uchar a,b,c; //定义三个变量、。 uchar m; // uint teempr; // uint z,i; //*********************************************★下面是PWM调制的数组★******************************************************** //220- zhan0.02 214--0.04 209-0.07 203-0.11 19
[单片机]
【51单片机】 数据管显示HELLO
软件准备+硬件准备 软件: 1.Keil软件v6.12(与书中版本保持一致方便学习,如果喜欢别的版本也可以下载别的) 2. STC-ISP(将十六进制代码写到单片机上) 硬件:TX-1C(书本推荐,并非本人广告) 【学习单片机,你起码得有块单片机的板子吧…也不一定是自己的,借别人的也可以】 HELLO.程序 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; //申明U1锁存器的锁存端 sbit wela=P2^7; //申明U2锁存器的锁
[单片机]
单片机学习笔记51单片机基础
1980年因特尔退出MCS-51单片机 现在扩展告诉IO口 AD转换器 PWM WDT(看门狗) IIC等 MCS-51停产 与MCS-51兼容的有 Atmel公司 AT89C5X 停产 不支持ISP下载 已经被AT89S5X取代 这个可以ISP下载 SST公司 SST89E5X 带监控程序 可以简单仿真 宏晶STC(大陆的) STC89C5X 支持串口下载 STC89C52 AT表示 Atmel公司的芯片 9表示flash存储器 S表示可以下载的flash LV表示低电压 3.3V 52是型号 2表示8K的ROM 24表示最高使用晶振24M P表示双列直插封装的 D陶瓷封装
[单片机]
MCS-51单片机的ALE引脚有何功能?信号波形是什么?
MCS-51单片机的ALE为地址锁存信号,每个机器周期输出两个正脉冲。 在访问片外存储器时,下降沿用于控制外接的地址锁存器锁存从P0口输出的低8位地址。在没有接外部存储器时,可以将该引脚的输出作为时钟信号使用。
[单片机]
AT89C51单片机在数控车床切削力测量中的应用
1 问题的提出 在数控车床的加工中,切削力的测量甚为重要。通过对切削力的测量可以分析与研究数控车床各零部件、机构或结构的受力情况和工作状态,验证设计和计算结果的正确性,确定整机工作过程中的负载谱和某些物理现象的机理。因此,他对发展设计理论、保证数控机床安全可靠地运行以及实现数控机床自动加工、自动检测、自动控制和切削力过载报警等都具有十分重要的作用和适用价值。 2 系统硬件接口电路的设计 系统硬件原理框图如图1所示。系统以AT89C51单片机为控制核心,外围电路针对单片机的功能特点而设计,充分利用了AT89C51单片机片内资源丰富的特点,简化了外围电路,提高了可靠性。下面对系统中主要功能模块与硬件可靠性技术逐一分析。 图1
[单片机]