用汇编语言编子程序,多重循环方式,实现延时300毫秒。振荡频率12MHz,要写出延时时间的计算过程?

用汇编语言编子程序,多重循环方式,实现延时300毫秒。振荡频率12MHz,要写出延时时间的计算过程?,第1张

delay:

mov r2,#200 1

dly:

mov r3,#249 1*200

djnz r3,$ 2*249*200

mov r3,#249 1*200

djnz r3,$ 2*249*200

mov r3,#249 1*200

djnz r3,$ 2*249*200

djnz r2,dly 2*200

ret 2

total:1+3*(200+2*249*200)+200+2=299803us

这是调用一个延时10毫秒的延时子程序 当然,子程序的名运裂告字可旁明以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY10MS:

MOV R2,#20

DELAY10MS1:

MOV R3,#250

DJNZ R3,$

DJNZ R3,DELAY10MS1

RET

这是调用一个延时20毫秒的延时子程序 当然,子程序的名字可以自己定 DELY1MS: 这个名字一定要与调用中出现的名字一样,否则的话,调用的就不是这个子程序了

DELAY20MS:

MOV R2,#40

DELAY20MS1:

MOV R3,#250

DJNZ R3,$

DJNZ R3,DELAY20MS1

RET

RETRET的作用是子程序返回。调用一个子程序,当单片机执行到RET语句的时候,单片机就会返回到调用的地方并继续向下执行。

下面给你一个例程:

闪烁源羡灯

ORG 00H

AJMP START

ORG 30H

START:

MOV P0,#00H

LCALL DELY调用延时子程序

MOV P0,#0FFH

LCALL DELY调用延时子程序

AJMP START

DELY:

MOV R7,#250

DL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DL1

RET


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存