51单片机汇编语言倒计时60秒循环程序

现在有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

可以在SJMP $这里改成判断R2是不是为0,如是就重新载入60…如果不是就跳回重新判断R2追答

或是在中断里面改也可以,在那个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

可以了吗?

温馨提示:答案为网友推荐,仅供参考