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

  • 时间:
  • 浏览:2

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

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

就说 都要较长时间的延时,则需采用多重循环组织结构。类式下面守护程序运行运行为1s延时子守护程序运行运行,守护程序运行运行中采取了多重循环。

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

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

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

指令周期是指单片机执行四根指令所都要的时间,2个多指令周期通常含晒 1~2个多机器周期,其中常用的DJNZ指令周期为2个多机器周期,即执行DJNZ指令都要2s;MOV指令周期为2个多机器周期,即执行MOV指令都要1s。

每循环一次都要的时间为3s,就说 R值为11000,就说 要循环11000次,循环花费的时间为540s。该延时子守护程序运行运行总的延时时间都要包括执行MOV指令时间1s和执行RET返回指令时间2s,但就说 你这些 时间比循环时间要短就说 ,就说 ,延时时间的长短主就说 由循环次数来控制。

使用时,在调用DELAY延时子守护程序运行运行事先,要根据对延时时间的要求,先对R5赋值,倘若延时为0.5s,需将R5值赋值为25;延时为1s,需将R5值为1000,R5最大值为255,这是就说 R0~R7有的是8位寄存器,最大存放数据为二进制数11111111,即255,在使用时注意暂且超出其有效范围。改进后的延时守护程序运行运行使用形式如下:

本节书摘来异步社区《51单片机应用开发从入门到精通》一书中的第2章,第2.4节,作者:张华杰 ,更多章节内容都可不都可以访问云栖社区“异步社区”公众号查看

51单片机应用开发从入门到精通

在单片机的实时控制系统中,常常都要用到延时操作,就说 ,延时子守护程序运行运行往往是编写单片机守护程序运行运行中不可缺少的一每种。延时法子有硬件延时和软件延时,硬件延时将在上面有关章节中介绍,本节将介绍软件延时法子。

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

1 DELAY_20msR5:

2

3 DLY1: MOV R6, #1000

4 DLY2: MOV R7, #1000

5 DJNZ R7, $

6 DJNZ R6, DLY2

7 DJNZ R5, DLY1

8 RET`

短暂的时间延时可采取简单的单重循环组织结构来实现,类式,下面守护程序运行运行为延时540s的短暂延时子守护程序运行运行,守护程序运行运行中采取了单重循环。

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