各种汇编延时程序大集合 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 -------------------------------------------------------------------------------- ;延时5 秒左右 DELAY5S:PUSH 04H PUSH 05H PUSH 06H MOV R4,#50 DELAY5S_0:MOV R5,#200 DELAY5S_1:MOV R6,#245 DJNZ R6,$ DJNZ R5,DELAY5S_1 DJNZ R4,DELAY5S_0 POP 06H POP 05H POP 04H RET -------------------------------------------------------------------------------- ;513 微秒延时程序 DELAY: MOV R2,#0FEH DELAY1: DJNZ R2,DELAY1 RET -------------------------------------------------------------------------------- ;10 毫秒延时程序 DL10MS: MOV R3,#14H DL10MS1:LCALL DELAY DJNZ R3,DL10MS1 RET -------------------------------------------------------------------------------- ;0.1s延时程序12mhz DELAY: MOV R6,#250 DL1: MOV R7,#200 DL2: DJNZ R6,DL2 DJNZ R7,DL1 RET -------------------------------------------------------------------------------- ;延时1046549 微秒(12mhz ) ;具体的计算公式是: ;((((r7*2+1)+2)*r6+1)+2)*r5+1+4 = ((r7*2+3)*r6+3) *r5+5 DEL : MOV R5,#08H DEL1: MOV R6,#0FFH DEL2: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL2 DJNZ R5,DEL1 RET -------------------------------------------------------------------------------- ;1 秒延时子程序是以12MHz 晶振 Delay 1S:mov r1,#50 del0: mov r2,#91 del1: mov r3,#100 djnz r3,$ djnz r2,del1 djnz r1,del0 Ret -------------------------------------------------------------------------------- ;1 秒延时子程序是以12MHz 晶振为例算指令周期耗时 KK: MOV R5,#10 ;1 指令周期 1 K1: MOV R6,#0FFH ;1 指令周期 10 K2: MOV R7,#80H ;1 指令周期 256*10=2560 K3: NOP ;1 指令周期 128*256*10=327680 DJNZ R7,K3 ;2 指令周期 2*128*256*10=655360 DJNZ R6,K2 ;2 指令周期 2*256*10=5120 DJNZ R5,K1 ;2 指令周期2*10=20 RET ;2 指令周期21+10+2560+327680+655360+5120+20+2=990753 ;约等于1 秒1 秒=1000000 微秒 --------------------------------------------------------------...