《51单片机应用开发从入门到精通》——2.4 延时时间计算实例

2.4 延时时间计算实例

51单片机应用开发从入门到精通
在单片机的实时控制系统中,常常需要用到延时操作,所以,延时子程序往往是编写单片机程序中不可缺少的一部分。延时方法有硬件延时和软件延时,硬件延时将在后面有关章节中介绍,本节将介绍软件延时方法。

所谓软件延时,就是让计算机重复执行一些无具体任务的程序,利用执行程序的时间来达到延时的目的。

2.4.1 机器周期和指令周期

单片机读、写操作都需要消耗一定的时间,机器周期是指单片机完成一个基本操作所用的时间,如读操作、写操作等。当石英晶体为12MHz时,1个机器周期为1s。

指令周期是指单片机执行一条指令所需要的时间,一个指令周期通常含有1~4个机器周期,其中常用的DJNZ指令周期为两个机器周期,即执行DJNZ指令需要2s;MOV指令周期为一个机器周期,即执行MOV指令需要1s。

2.4.2 单重循环短暂延时

短暂的时间延时可采取简单的单重循环结构来实现,例如,下面程序为延时540s的短暂延时子程序,程序中采取了单重循环。

此子程序中,由第3、4行代码构成单重循环结构,其中,DJNZ指令为控制转移指令,该指令每执行一次,寄存器R值减1,只要R值减1后不为0,就会转移到第3行标号DE1处去执行。

每循环一次需要的时间为3s,由于R值为180,所以要循环180次,循环花费的时间为540s。该延时子程序总的延时时间还要包括执行MOV指令时间1s和执行RET返回指令时间2s,但由于这个时间比循环时间要短很多,所以,延时时间的长短主要是由循环次数来控制。

2.4.3 多重循环较长时间延时

如果需要较长时间的延时,则需采用多重循环结构。例如下面程序为1s延时子程序,程序中采取了多重循环。

此子程序采用了3重循环结构,先运行第5行代码操作,每次减1,减到0为止;再运行第6行代码对R6进行减操作,每次减1,减1后不为0,则转移到标号DLY2处运行,此时将R7赋值为100,并再对R7进行减法内循环。

当R6减为0时,程序运行到第7行,开始外循环,R5减1不为0时转移到标号DLY1处运行。为了计算上的简便,可以忽略赋值语句的时间,只计算“DJNZ R7, $”语句的执行时间,该指令执行一次需2s,执行的次数为R5、R6和R7值的乘积,即:

总延时 = 2sR7R6R5
           =2s10010050 = 1 000 000s
           =1s

2.4.4 延时程序改进

从上节程序可以看出,只要改变寄存器R5、R6和R7的值,就可以获得不同延时时间。在上例中假设R6和R7值不变,只改变R5值(R5取值范围为1~255),可获得不同的延时。由于忽略了赋值语句的执行时间,实际延时时间要比计算的时间略大一些。

为了使一个延时子程序能产生不同的延时,可以将2.4.3节中的程序改进为以下的形式。其中R7、R6值不变,通过改进R5值,即改变外循环次数来改变延时时间,延时子程序的延时时间为0.02sR5。

使用时,在调用DELAY延时子程序之前,要根据对延时时间的要求,先对R5赋值,假如延时为0.5s,需将R5值赋值为25;延时为1s,需将R5值为50,R5最大值为255,这是因为R0~R7都是8位寄存器,最大存放数据为二进制数11111111,即255,在使用时注意不要超出其有效范围。改进后的延时程序使用形式如下:

MOV     R5, #50
ACALL  DELAY_20msR5```
延时时间为0.02sR5的延时程序如下:

1 DELAY_20msR5:
2
3 DLY1: MOV R6, #100
4 DLY2: MOV R7, #100
5 DJNZ R7, $
6 DJNZ R6, DLY2
7 DJNZ R5, DLY1
8 RET```

时间: 2024-08-04 08:53:12

《51单片机应用开发从入门到精通》——2.4 延时时间计算实例的相关文章

《51单片机应用开发从入门到精通》——2.13 软件陷阱实例

2.13 软件陷阱实例 在单片机系统的实际应用中,系统的抗干扰能力显得非常重要.提高单片机系统的抗干扰能力除了采取硬件抗干扰手段外,也可采用软件抗干扰的手段,并且软件抗干扰具有设计灵活.节省硬件资源.成本低的优点,加以合理运用也能起到很好的抗干扰效果. 软件抗干扰的措施主要有指令冗余.软件陷阱.软件"看门狗"等.本节通过软件陷阱实例介绍如何编写软件抗干扰程序. 本节首先介绍什么是程序跑飞以及软件陷阱技术,接着讲述软件陷阱在程序中的位置,最后将给出软件陷阱程序实例并对软件陷阱程序进行分析

《51单片机应用开发从入门到精通》——2.9 交通灯实例

2.9 交通灯实例 51单片机应用开发从入门到精通 定时器/计数器是单片机中最常用.最重要的功能模块之一,本节通过交通灯控制器实例来演示定时器的使用方法,并复习如何使用上节学习的散转程序. 本节首先介绍交通灯的基础知识以及定时器/计数器的基础知识,接着介绍本实例的硬件电路构成,然后逐步分析定时器的编程以及程序的全貌,最后将总结一下本实例的技巧与注意点. 2.9.1 基础知识 交通灯控制器实例主要使用了8051单片机的定时器/计数器,本实例的基础知识主要包括:交通灯的变化规律.定时器/计数器的概念

《51单片机应用开发从入门到精通》——2.10 变频报警实例

2.10 变频报警实例 51单片机应用开发从入门到精通 本实例是用软件延时方法实现变频振荡报警,即用P3.4端口输出1kHz和2kHz的变频信号以示报警,每隔1s交替变换1次.本节硬件设计与上节相同. 2.10.1 程序设计 本程序利用软件延时方法,使P3.4端口输出1kHz和2kHz的变频信号,每隔1s交替变换1次. 1.流程图 程序设计流程如图2-16所示. 2.程序 汇编语言编写的变频报警源程序FS02.ASM代码如下: 01: MAIN: MOV R1,#8 ;1kHz持续时间 02:

《51单片机应用开发从入门到精通》——导读

前言 51单片机应用开发从入门到精通 随着微处理器技术和SoC技术的发展,从较早的4位机到8位机,一直发展到现在的32位机,单片机的应用逐渐渗透到生产.生活的各个领域.本书主要针对MCS-51体系单片机,从硬件.软件两个方面的基础知识开始进行介绍.MCS-51体系单片机由于具有简单易学.稳定性好.成本低等优点,在工业控制.家用电器.汽车电子乃至航天电子等许多领域都有着重要的应用. 本书主要针对初.中级读者群,通过众多的实例介绍单片机开发的基础知识.基本工具.基本过程及简单应用,既方便初学者入门,

《51单片机应用开发从入门到精通》——1.3 Keil uVision2集成开发环境

1.3 Keil uVision2集成开发环境 51单片机应用开发从入门到精通 uVision2 IDE是Keil software公司的产品,它集项目管理.编译工具.代码编写工具.代码调试以及完全仿真于一体,特别适用于个人开发或者人数少.对开发过程的管理还不成熟的开发团体.这一功能强大的软件提供简单易用的开发平台,可以让开发者在开发过程中集中精力于项目本身,加快开发速度. 1.3.1 uVision2介绍 uVision2的界面窗口如图1-13所示,该软件提供了丰富的工具,常用命令都具有快捷工

《51单片机应用开发从入门到精通》——1.5 测试方法和工具

1.5 测试方法和工具 51单片机应用开发从入门到精通 完成一个用户样机,首先要完成硬件组装工作,然后进入软件设计.调试和硬件调试阶段.硬件组装就是在设计.制作完毕的印制板上焊好元件与插座,然后就可用仿真开发工具进行软件设计.调试和硬件调试工作. 1.用户样机软件的设计.调试 用户样机软件设计.调试的过程如图1-25所示,可为以下几个步骤. 第一步,建立用户源程序.用户通过开发系统的键盘.CRT显示器及开发系统的编辑软件,按照所要求的格式.语法规定,把源程序输入到开发系统中,并存在磁盘上. 第二

《51单片机应用开发从入门到精通》——2.1 简单点亮发光二极管实例

2.1 简单点亮发光二极管实例 51单片机应用开发从入门到精通 单片机最简单的实例之一就是点亮发光二极管(LED)闪烁.本节通过点亮1只发光二极管的实例来介绍单片机的I/O口操作. 本节首先介绍单片机I/O口结构的基础知识,接着介绍实例的硬件电路,然后给出了实例程序,最后将分析操作单片机的I/O口的技巧与注意点. 2.1.1 基础知识 8051单片机有4个并行I/O口:P0-P3.这4个I/O口中只有P0口是真正的双向口,P1-P3是准双向口,P3口还具有第二功能,为系统提供一些控制信号.4个并

《51单片机应用开发从入门到精通》——2.2 跑马灯实例

2.2 跑马灯实例 51单片机应用开发从入门到精通 在上一节点亮1只LED的基础上,让我们来看看如何控制多只LED实现跑马灯效果. 2.2.1 硬件电路图 本实例中,硬件电路和上一节的硬件电路相似,为了实现跑马灯,本实例电路连接了8只LED,原理电路图如图2-2所示. 2.2.2 软件程序设计 控制多只LED实现跑马灯效果可以有多种实现方式,下面给出其中两种,请对比这两种实现方式的优劣. 1.程序全貌 首先,使用上节学习的直接寻址位置1指令SETB bit和直接寻址位清0指令CLR bit控制P

《51单片机应用开发从入门到精通》——2.7 中断的控制及设置

2.7 中断的控制及设置 51单片机应用开发从入门到精通中断系统结构如图2-6所示,从图可见,中断控制的实质是对4个特殊功能寄存器TCON.SCON.IE和IP进行管理和控制.只要按照人们的要求对这些寄存器的相应位进行设置(存入0或1,一般设置1为开通),就能完成对中断的有效管理和控制. 2.7.1 中断允许控制寄存器IE 1.IE的格式及位的含义寄存器IE的地址为A8H,作用是控制各中断源的开放与关闭.它实行两级控制,IE中有个总的控制位EA,当EA = 0时,屏蔽所有的中断请求:而当EA =