现在有60s倒计时的程序,到0秒led灯亮,现在想改成循环的,求指点
ORG 000H
SJMP STAR
ORG 001BH
ORG 0030H
STAR: SETB P3.0
MOV R2,#60
MOV R4,#20
MOV IE,#88H
MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0B0H
SETB TR1
MOV A,R2
MOV B,#10
DIV AB
ACALL LED7
MOV P1,A
MOV A,B
ACALL LED7
MOV P2,A
SJMP $
TLS: MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ R4,T1S0
MOV R4,#20
DJNZ R2,T1S1
CLR TR1
CLR P3.0
SJMP T1S1
T1S0: RETI
T1S1: MOV A,R2
MOV B,#10
DIV AB
ACALL LED7
MOV P1,A
MOV A,B
ACALL LED7
MOV P2,A
RETI
LED7: INC A
MOVC A,@A+PC
RET
DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,0F8H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
END
或是在中断里面改也可以,在那个DJNZ R2的下一条指令加上重新载入60就好了
追问老哥能不能详细写下来指令
追答直接在中断里加看看
把MOV R2,60放到中断里面的DJNZ R2,的下一条
另外那个CLR TR1跟CLR P3.0要拿掉
追问如果拿掉led就不亮了吧
就是led到0秒的时候还要亮一下
是不是要在SJMP$这变
追答你是要循环但是也要led亮?
追问嗯对,0秒的时候led需要亮一下
追答那就在主程序里改吧……就在那个SJMP$这里改
追问老哥。。。。那个程序怎么改
追答我现在没在电脑前,你可以自己按照我说的先改改看…
追问怎么判断R2是否为0阿
得加一个子程序吧
比如SJMP LOOP
LOOP: (这里面判断R2是否为0,是的话就跳回STAR?)
先mov a,r2
然后jnz 跳到R2不为0的地方……
然后接下来可以加入R2重新载入60
可以了吗?