看了一段单片机汇编代码不太明白,哪位可解释我一下 书上说这是延时1000微秒的汇编延时程序。看不太明白。

2025-01-04 09:57:45
推荐回答(3个)
回答1:

DJNZ 是减一 不为零跳转
$ 是本行地址

DELAY: ;误差 0us
MOV R7,#01H ;立即数1放入R7
DL1:
MOV R6,#8EH ;立即数142放入R6
DL0:
MOV R5,#02H ;立即数2放入R5
DJNZ R5,$ ;R5的值减1 如果R5不为0 再次执行本句
DJNZ R6,DL0 ;R6的值减1 如果R6不为0 转到DL0去执行
DJNZ R7,DL1 ;R7的值减1 如果R7不为0 转到DL1去执行
RET ;程序结束 返回

MOV指令周期为1
DJNZ 指令周期为2
RET 指令周期为3
好像是吧``` 我退化了记不清了

回答2:

延时子程序
T=(01H)*(8EH)*(02H)*(机器周期)=1*142*2*(机器周期)

回答3:

延时程序,就是多次循环。
延时时间,取决于循环次数和系统的晶振频率。
看看这个吧:
http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/37d8c6fb9b91e1849f51462f.html