MCS51延时程序分析

延时方式

单片机控制应用中,延时必不可少。CPU过段时间再做某事,称为延时。延时有两种方法,即硬件延时和软件延时。

硬件延时是通过定时器/计数器实现的,软件延时一般通过执行循环程序实现。

硬件延时中,常用汇编指令及占用时间如下:

指令 占用机器时间
MOV Rn,#Data 1
DJNZ Rn,rel 2
RET 2
NOP 1

以12MHz晶振为例,机器周期为1us,则执行一个MOV指令所用时间为1us;6MHz晶振机器周期为2us,执行一句DJNZ指令所用时间为4us。

硬件延时程序中又分为单重循环延时程序、双重循环延时程序及多重循环延时程序。晶振及延时程序的不同决定了延时时间范围。

单循环延时程序

D2:	 MOV  	R0 ,  #X  ;将立即数X存到寄存器R0中,耗时1机器周期
D1:	 DJNZ 	R0 ,  D1  ;寄存器R0减1,不为零即跳转到D1,耗时2机器周期
	 RET           	  ;耗时2机器周期	

设机器周期为T,*延时时间=2XT+1T+2T=(3+2*X)T

R0为8位寄存器,X取值为0—256。

频率为6MHz晶振延时时间范围为10~1030us;频率为12MHz晶振延时时间范围为 50—515us。

双重循环延时程序*

 	D3:	MOV	    R1,#Y 	;1周期
 	D2:	MOV 	R0,#X	;1周期
 	D1:	DJNZ	R0,D1	;2周期
 			DJNZ	R1,D2	;2周期
 			RET				;2周期

延时时间=(2X+1+2)YT+T+2T=(2XY+3Y+3)*T

猜你喜欢

转载自blog.csdn.net/GAI159/article/details/86635120