多种延时汇编程序集合

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

;延时5秒左右

DELAY5S:PUSH 04H

PUSH 05H

PUSH 06H

MOV R4,#50

DELAY5S_0:MOV R5,#20

DELAY5S_1:MOV R6,#24

5

DJNZ R6,$

DJNZ R5,DELAY5S_1

DJNZ R4,DELAY5S_

POP 06H

POP 05H

POP 04H

RE

T

;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晶振

Delay1S: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微秒

;这个算下来也只有0.998抄

T_0: MOV R7,#10;

D1: MOV R6,#200;

D2: MOV R5,#248;

DJNZ R5,$

DJNZ R6,D2;

DJNZ R7,D1;

RET

;这样算下来应该是1.000011秒

T_0: MOV R7,#10;

D1: MOV R6,#200;

D2: NOP

MOV R5,#248;

DJNZ R5,$

DJNZ R6,D2;

DJNZ R7,D1;

RET

DELAY_2S: ;10MS(11.0592mhz)

MOV R3,#200

JMP DELAY10MS

DELAY_100MS: ;100MS(11.0592mhz)

MOV R3,#10

JMP DELAY10MS

DELAY_10MS:

MOV R3,#1

DELAY10MS: ;去抖动10MS

(11.0592mhz)

MOV R4,#20

DELAY10MSA:

MOV R5,#247

DJNZ R5,$

DJNZ R4,DELAY10MSA

DJNZ R3,DELAY10MS

RET

DELAY_500MS: ;500500MS MOV R2,#208

JMP DELAY_MS

DELAY_175MS: ;175MS

MOV R2,#73

JMP DELAY_MS

delaY_120MS: ;120MS

MOV R2,#50

JMP DELAY_MS

delay_60ms: ;60ms

MOV R2,#25

JMP DELAY_MS

delay_30ms: ;30ms

MOV R2,#12

JMP DELAY_MS

DELAY_5MS: ;5MS

MOV R2,#2

;===================================

DELAY_MS:

CALL DELAY2400

DJNZ R2,DELAY_MS

RET

;===================================

DELAY2400: ;10x244+4=2447

/1.024=2390

MOV R0,#244 ;1 DELAY24001:

MUL AB ;4

MUL AB ;4

DJNZ R0,DELAY24001 ;2

RET

DELAY: ;延时子程序(1秒) MOV R0,#0AH

DELAY1: MOV R1,#00H

DELAY2: MOV R2,#0B2H

DJNZ R2,$

DJNZ R1,DELAY2

DJNZ R0,DELAY1

RET

MOV R2,#10 ;延时1秒

LCALL DELAY

MOV R2,#50 ;延时5秒

LCALL DELAY

DELAY: ;延时子程序

PUSH R2

PUSH R1

PUSH R0

DELAY1: MOV R1,#00H

DELAY2: MOV R0,#0B2H

DJNZ R0,$

DJNZ R1,DELAY2 ;延时 100 mS DJNZ R2,DELAY1

POP R0

POP R1

POP R2

RET

DELAY: ;延时1毫秒PUSH PSW

SETB RS0

MOV R7,#50

D1: MOV R6,#10

D2: DJNZ R6,$

DJNZ R7,D1

POP PSW

RET

(转贴)精确廷时计算公式:

相关文档
最新文档