汇编延时程序,谁教我下,要有详细的解释。12M晶振=1微妙

2025-02-06 12:11:41
推荐回答(1个)
回答1:

;513us延时程序 DL513: MOV R7,#0FFH DJNZ R7,$ RET ;1ms延时程序 DL1MS: MOV R5,#02H LOOP: LCALL DL513 ;515usDJNZ R5,LOOP RET ;总时1034us有1.034ms;3ms延时程序 DL3MS: MOV R4,#03H LOOP2: LCALL DL1MS ;1036usDJNZ R4,LOOP2 RET ;总时3117us有3.117ms;10ms延时程序 DL10MS: MOV R6,#14H LOOP1: LCALL DL513 ;515usDJNZ R6,LOOP1 RET ;总时7241us只有7.241ms;1s延时程序 DL1S: MOV R2,#100 DJNZ R2,DL10MS ;7243usRET ;总时724303us只有0.724303s;5S延时程序 DL5S: MOV R3,#05H DJNZ R3,DL1S ;724305usRET;总时3621528us只有3.621528s 1、如此做累积误差会比较大2、用定时器做较长时的延时精度会高一些3、用多重循环也要比循环嵌套好些比如:KKKK0:MOV R2,#XXKKKK1:MOV R3,#LLKKKK2:MOV R4,#NNKKKK3:MOV R5,#MM DJNZ R5,$DJNZ R4,KKKK3DJNZ R3,KKKK2DJNZ R2,KKKK1RET适当选择各循环常数