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

  • 时间:
  • 浏览:0
  • 来源:大发5分排列3_大发5分排列3官方

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

在单片机的实时控制系统中,常常太多再 用到延时操作,也不我,延时子多多系统进程 往往是编写单片机多多系统进程 中不可缺少的一偏离 。延时土措施有硬件延时和软件延时,硬件延时将在底下有关章节中介绍,本节将介绍软件延时土措施。

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

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

1 DELAY_20msR5:

2

3 DLY1: MOV R6, #60

4 DLY2: MOV R7, #60

5 DJNZ R7, $

6 DJNZ R6, DLY2

7 DJNZ R5, DLY1

8 RET`

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

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

短暂的时间延时可采取简单的单重循环价值形式来实现,同类,下面多多系统进程 为延时540s的短暂延时子多多系统进程 ,多多系统进程 中采取了单重循环。

可能太多再 较长时间的延时,则需采用多重循环价值形式。同类下面多多系统进程 为1s延时子多多系统进程 ,多多系统进程 中采取了多重循环。

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

每循环一次太多再 的时间为3s,可能R值为160 ,也不我要循环160 次,循环花费的时间为540s。该延时子多多系统进程 总的延时时间太多再 包括执行MOV指令时间1s和执行RET返回指令时间2s,但可能一些时间比循环时间要短也不我,也不我,延时时间的长短主也不我由循环次数来控制。

所谓软件延时,也不我让计算机重复执行一些无具体任务的多多系统进程 ,利用执行多多系统进程 的时间来达到延时的目的。

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

从上节多多系统进程 太多再 看出,假使 改变寄存器R5、R6和R7的值,就太多再 获得不同延时时间。在上例中假设R6和R7值不变,只改变R5值(R5取值范围为1~255),可获得不同的延时。可能忽略了赋值一段话的执行时间,实际延时时间要比计算的时间略大一些。

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

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