了解模块化编程
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-08 12:43
【51单片机 】定时器的初始值计算 详解
首先值得一提的是:51单片机定时器与主程序是并行工作的,就是主程序在运行的时候,定时器也在计数,计数溢出后定时器中断主程序的运行,转而执行中断服务程序。此外还有串行口、中断系统…,都独立的工作,不用 CPU 干预。 正文部分: 好了,我们先来看初始值计算公式: 公式:(216– X)× 12 ÷ 晶振频率 = 定时时间(默认单位us) ————————————————————————————————— X是未知量 ————————————————————————————————— 216是根据方式选择的,可以自行选择,方式1为16位 方式0 :213 (少用) 方式1 :216 (最常用) 方式2 :28 (常用) 假
[单片机]
2051单片机仿PT2272软件解码程序
本程序是用51单片机来软件解码pt2262编码,是一个无线服务呼叫器的代码已经成功的在产品的应用,有LED显示. 并有原理图与pcb文件以及完整的代码提供下载: http://www.51hei.com/ziliao/file/37724122PT2272.rar ; ========================================================= ; ================================================================ ; PT2272 模拟解码器(接收来自射频解码模块的2262格式串行数据流) ; 管理三位数码管显示器 ;
[单片机]
51单片机之——中断的概念
前面讲了许多51单片机的外设部分,大致有一些芯片,以及元器件。而这篇博文就走进单片机内设——中断系统。 首先,搞清楚什么是中断? 引用资料书的话:对于单片机而言,中断是指CPU在处理某一件事A时,发生了另一件事B,请求CPU迅速去处理(这个过程是“中断发生”);此时,CPU暂时停止当前的A事件(这个过程是“中断响应”),转去处理B事件(这个过程是“中断服务”);待CPU将B事件处理完毕后,再回到事件A被中断打断的地方继续处理事件A(这个过程是“中断返回”)。这一过程,称之为中断。其流程图如下所示: 其中,主程序为上述所说的A事件,中断请求由B事件发出。 再来引出一个生活中的例子: 首先,我们会知道有一个重要的人会在中午正餐的时
[单片机]
51单片机1s延时程序设计
#include sbit P1_0 = P1^0; void Delay(); // 下面引用时一定要和这里的大小写一致否则会有警告或错误 void Main() { while (1) // 开始一直循环 { P1_0 = 0; Delay(); // 没有参数也要加 () 否则会有Warning P1_0 = 1; Delay(); } } void Delay() // 12M晶振1s延时 { unsigned char h, i, j, k; for (h = 5; h 》 0; h--) for (i = 4; i 》 0; i--) for (j
[单片机]
mcs-51单片机是由哪些部分组成的
学习单片机的内部结构之前,我们先了解下我们现在正在使用的计算机的几大组成部份: 计算机的五个组成部份: 运算器:用于实现算术和逻辑运算。计算机的运算和处理都在这里进行; 控制器:是计算机的控制指挥部件,使计算机各部份能自动协调的工作; 存储器:用于存放程序和数据;(又分为内存储器和外存储器,内存储器就如我们电脑的硬盘,外存储器就如我们的U盘) 输入设备:用于将程序和数据输入到计算机(例如我们电脑的键盘、扫描仪); 输出设备:输出设备用于把计算机数据计算或加工的结果以用户需要的形式显示或保存(例如我们的打印机)。 注:1、通常把运算器和控制器合在一起称为中央处理器(Central Processing Unit),简称CPU。 2
[单片机]
基于51单片机多功能太阳能路灯的设计与实现
随着社会发展的步伐日益加快,人们对新型能源地开发利用程度不断加大,太阳能作为一种新型能源,越来越受到人们的重视,合理有效的利用好太阳能,已逐步成为节能环保的一种趋势。西藏太阳能资源居中国首位,也是世界上最丰富的地区之一,全年平均日照时数在3 000小时左右。因此为了更环保、更加节能,合理有效地利用太阳能,我们设计出一款多功能太阳能路灯。文中采用C8051F020作为主控芯片,通过51单片机控制片内高速AD对紫外线传感器、温度传感器、光照度传感器等进行采样,对拉萨环境进行监测(特别是紫外线强度的监测),相关数据参数经过LCD显示,用户可通过需要显示广告信息,如进行公益广告,商业广告相关信息的宣传;同时利用具有高效节能的LED灯作为
[单片机]
怎么用8051单片机控制步进电机
在本文中,讲解了怎么用8051单片机控制步进电机。步进电机广泛用于工业、医疗、消费电子应用。简而言之,它用于任何需要物体精确旋转或定位的地方。 一、什么是步进电机? 步进电机是一种无刷电机,可将电脉冲转换为机械旋转。顾名思义,它根据输入脉冲逐步旋转。步进电机通常具有多个励磁线圈(相)和带齿转子。电机的步长由转子上的相数和齿数决定。步长是转子在一步中的角位移。如果步进电机有4相50个齿,则需要50×4=200步才能旋转一整圈。所以步距角将为360/200=1.8°。 我们使用的步进电机有4极和一个1/64减速齿轮机构,用于增加扭矩。电机的步距角为5.64°。但考虑减速机时,输出轴的步距角为5.64/64°。步进电机的内部示意
[单片机]
基于AT89C51单片机设计的简易智能机器人
引言 随着微电子技术的不断发展,微处理器芯片的集成程度越来越高,单片机已可以在一块芯片上同时集成CPU、存储器、定时器/计数器、并行和串行接口、看门狗、前置放大器、A/D转换器、D/A转换器等多种电路,这就很容易将计算机技术与测量控制技术结合,组成智能化测量控制系统。这种技术促使机器人技术也有了突飞猛进的发展,目前人们已经完全可以设计并制造出具有某些特殊功能的简易智能机器人。 1 设计思想与总体方案 1.1 简易智能机器人的设计思想 本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线
[单片机]