是一个地址记录器,具体作用就是,R6的内容减一不为零,跳转到$,而这个$又表示当前行,就是说,R6不为零,我本来要跳转了,但是跳转的目的地就是当前你所在的位置,如同你要迈脚走一步,可是刚卖出去,又回来了,所以这个符号又叫原地踏步。作用的话貌似不这么用,一般都是JMP $ ,而这个跟在D...
在汇编语言中$表示当前地址,$-4就表示将当前地址减4
DL2是一个段的标号。R6是寄存器,里面存有一个数字,取值0到255。DJNZ是减1、判断结果是否为0再跳转。因此,该语句就是说,R6--,如果R6>0就跳转到DL2,如果R6=0就执行下一行语句。
单片机晶振12MHz mov r6,#0a0h ; 0a0h=160 djnz r6,$ ;延时了多少个机器周期? 1+160*2 个机器周期 多少时间? 1+160*2 us
根据上面程序执行指令的机器周期总的个数 就可以推算出上面程序的延时时间了。例如:delay: mov R7,#0 loop: R6,#0 djnz R6,$ ;2个机器周期 djnz R7,loop 延时时间= (2个机器周期*1微妙)*256*256=2*65536微妙=131072微妙=131毫秒。呵呵 满意 就选满意回答 ...
若R6为0程序向下执行,若R6不为0程序跳转到D2处
在R6初值为10时,DNZ+R6,rel指令将循环执行9次。因为DNZ+R6,rel指令会检查R6的值,如果值不为0,就会执行该指令,然后将R6的值减1。由于R6的初值为10,所以指令会循环执行9次,最后将R6的值减到0。在R6初值为10时,DNZ+R6,rel指令将循环执行9次。因为DNZ+R6,rel指令会检查R6的值,如果值不为...
LCALL DELAY SJMP START DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#249 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END t=20×[1+(1+249×2+2)×20+2] =200460μs≈0.2s 3、流水灯用P1口通过一定时间的延时轮流产生低电平输出 ,以达到发光二极管轮流点亮的效果 ...
单片机里DJNZ代表单片指令。DJNZ RN,REL 是一条件转移指令,先将工作寄存器Rn中的数减“1”,判断结果是否为“0”,不为“0”程序就跳转到行标为REL的地方执行,否则,为“0”就不转移,继续执行下一条指令。DJNZ指令有两种格式:DJNZ Rn,rel和DJNZ direct,rel。前者为双字节指令,其中第二个字节...
将R6,R5中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到WAR0,DL11处执行.