汇编1S的延时程序怎么弄

汇编1S的延时程序怎么弄,第1张

延时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秒。

单片机编程时延时程序其实就是一些循环指令组成的集合。比如:

DELAY:

    MOV R2,#248    ;本条指令1T执行1次

    DJNZ R2,$      ;本条指令2T执行248次

    NOP            ;本条指令1T执行1次

    RET            ;本条指令2T执行1次

    

所以延时时间为:1+2482+1+2=500T,如果晶振是12M的话,延时500us

ah是高位字节,al是低位字节,ax是包含了ah和al两个字节的字;

ah和al都是8位长度,最大值是FFH,因此不可能将200H赋给ah,编译时会报错;如果将200当做十进制才可以;(将汇编默认的16进制改成10进制。)

在delay延时程序里面,首先push ax 是在堆栈中保存ax;

ax的值赋给了cx。它们的高位是200D, 即C8H,低位是0,一起是C800H;

CX北赋值之前被压栈,送入堆栈;

cx在循环loop里面是用来倒计数的,每循环一次,cx自动减去1,当cx达到0时,loop结束。

al是0不要紧,循环次数是用cx来计算的;

最后cx, ax依次出栈,还原先前的值。注意出栈顺序,因为堆栈是先进后出的;

ret是退出循环;

以上就是关于汇编1S的延时程序怎么弄全部的内容,包括:汇编1S的延时程序怎么弄、单片机汇编程序怎么计算延时、汇编延时程序疑问等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存