求哪位大侠解释下下面的单片机定时器汇编语言

DELAY:MOV A,#0A6HLOOP:DEC JNZ LOOP DJNE R0,DELAY RET
2024-12-28 12:00:35
推荐回答(4个)
回答1:

DELAY:MOV A,#0A6H ;A= 0a6H
LOOP:DEC ;A=A-1
JNZ LOOP ;如果A=0;则下一句,否则跳到 LOOP:
DJNE R0,DELAY ;R0=R0-1; 如果R0=0,执行下一句,否则跳到DELAY:
RET ;退出子程序

我认为是个延时程序,而不是定时器程序

回答2:

DEC 后面不跟操作数也可以???
上面的几位大哥都没提出疑问,莫不是汇编也有默认参数??
DEC 难道相当于 DEC A ?编译时不会出错?
晕了……你们啊……
再说为什么要用DEC A…… JNZ……组合?总觉得怪怪的。
MOV R1, #0A6H
DJNZ R1,$
不是更清楚更有效?

回答3:

延时子程序开始
送立即数0a6h给a
子程序减1
判断其是否等于0
若等于则顺序
否则返会
判断r0-1是否为0
为则顺序
否则 返回
返回主程序
倒数第二行是djnz
not
djne
ok

回答4:

同意是延时程序不是定时器程序。