比如:設晶振頻率為12MHz 則每機器周期為1us
513us延時程序為
DL513: MOV R7,#0FFH ;1us
DJNZ R7,$;2us *255=510us
RET ;2us
延時時間為1+510+2=513us
延時時間較長則可以用多重循環(以四重循環為例),如:
KKKK0:MOV R2,#XX ;1us
KKKK1:MOV R3,#LL ;1us*XX
KKKK2:MOV R4,#NN ;1us*XX*LL
KKKK3:MOV R5,#MM ;1us*XX*LL*NN
DJNZ R5,$ ;2us *XX*LL*NN*MM
DJNZ R4,KKKK3 ;2us *XX*LL*NN
DJNZ R3,KKKK2 ;2us *XX*LL
DJNZ R2,KKKK1 ;2us *XX
RET ;2us
延時時間為1us+1us*XX+1us*XX*LL+1us*XX*LL*NN+2us *XX*LL*NN*MM+2us *XX*LL*NN+2us *XX*LL+2us *XX+2us
適當確定四個循環次數XX、LL、NN、MM就能得到準確的延時時間。