汇编 延时子程序

汇编 延时子程序,第1张

用delay来产生延时在要求较高的场合不大合适。

可调用系统时间来产生准确的延时,并且可控制延迟时间

TEMP: MOV AH,2CH

INT 21H

ADD DH,5 ;获得时间DH为 当前的秒数,5秒可以自己选择

PUSH DX

WAIT:

POP DX

MOV AL,DH

PUSH DX

MOV AH,2CH ;新的时间

INT 21H

CMP DH,AL

JB WAIT ;小于5秒的话继续查询

欢迎讨论

使用INT 15H。MOV AH,86H是延迟。

某资料上写参数CX:DX=千分秒,这十分令人费解,研究了一番,发现是是延时(CX2^16+DX)个百万分之一秒,CXDX相当于作一个64位寄存器,CX高位,DX低位

用的stc89c52RC整段程序如下:

MOV R0,#0

START:MOV A,R0

MOV DPTR,#TAB2

MOVC A,@A+DPTR

MOV P3,A

INC R0

ACALL DELAY

CJNE R0,#00BH,START

MOV R0,#0

SJMP START

DELAY:

MOV R2,#10

L1: MOV R3,#200

L2: MOV R4,#450

L3: DJNZ R4,L3

DJNZ R3,L2

DJNZ R2,L1

ret

DEL1S:MOV R7,#10\x0d\D1: MOV R6,#200\x0d\D2: MOV R5,#250\x0d\ DJNZ R5,$\x0d\ DJNZ R6,D2\x0d\ DJNZ R7,D1\x0d\ RET\x0d\\x0d\说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等\x0d\ 2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5

延时1s计算方法是将所有指令执行时间相加得出的。比如:

dly1s:

mov

r2,#10

;1

dly1:

mov

r3,#200

;110

dly2:

mov

r4,#248

;120010

djnz

r4,$

;224820010

djnz

r3,dly2

;220010

djnz

r2,dly1

;210

ret

;2

total=1+10+2000+992000+4000+20+2=998033

如果使用12m晶振,那么延时时间为0998秒。

以上就是关于汇编 延时子程序全部的内容,包括:汇编 延时子程序、汇编语言如何延时2秒、延时程序 汇编等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9485064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存