汇编语言 延迟子程序

汇编语言 延迟子程序,第1张

push cx先把cx推进栈以保存cx原来简首的中咐改值。然后用mov cx,0ffh赋值,卖判loop循环每执行一次cx自减一,到cx为0为止,此时循环共执行0ffh次即255次。再将栈中cx原来的值d出给cx寄存器。

如果CUP主频为40mHz,则时钟周期为1/40=0.025微秒

在808X中,一条LOOP指令如果实现跳转的话需要18个时钟周期,退出时需要5个时钟周期。所以这个延时子程序循环部分的延时(0.025*18*255+5)微秒,其他语句的延时基本可以忽略

这个可以做到,如果晶振是12M的话,一下方法可以腊弊实现延时1小时,精确度在秒级别。

DELAY1H:

MOV R7,#1801/1000000

DLY1H:

LCALL DELAY_20S180*19.960603s +2*180

DJNZ R7,DLY1H2*180/1000000

RET2/1000000

共延时时间:3592.9s误差为7.1秒,如果再精确的话,再加一耐局余昌滚点延时就可以了。

DELAY_20S:Total=19.960603s

MOV R2,#1

DLY1:

MOV R3,#2001*200

DLY2:

MOV R4,#2481**200*200

DJNZ R4,$2**248*200*200

DJNZ R3,DLY22*200*200

DJNZ R2,DLY12*200

RET2


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

原文地址: http://outofmemory.cn/yw/12265261.html

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

发表评论

登录后才能评论

评论列表(0条)

保存