51单片机用汇编编程使用定时器0,用定/计数器T0中断的方法定时0.5秒,使8个流水灯依次点亮,每个灯亮0.5秒

我编的程序怎么在KEIL运行好像是死循环,运行到SJMP $这里就停了,不能跳出这这个循环指令 ,请帮忙看看那里错了,谢谢
ORG 0000H
AJMP START
ORG 000BH
AJMP INT_SUB
ORG 0200H
START:MOV R7,#10;设置循环次数
MOV A,#7FH
MOV SP,#30H
MOV TMOD,#01H;设置为软件启动,定时器模式,工作模式方式1
MOV TH0,#3CH;给定时/计数器设初值,定时时间为50us
MOV TL0,#0B0H
SETB ET0 ;打开T0定时计数器
SETB EA ;打开全局开关
SETB TR0 ;开始计数
SJMP $ ;等待中断
INT_SUB:DJNZ R7,LOOP;判断记时次数是否够,一次50毫秒,共十次
RL A
MOV P1,A
LOOP: MOV TH0,#3CH;重新给定时/计数器设初值
MOV TL0,#0B0H
MOV R7,#10;重新给计时循环次数赋值
RETI
END

改动如下:
……
INT_SUB:
MOV TH0,#3CH;重新给定时/计数器设初值
MOV TL0,#0B0H
DJNZ R7,LOOP;判断记时次数是否够,一次50毫秒,共十次
RL A
MOV P1,A
MOV R7,#10;重新给计时循环次数赋值
LOOP:
RETI

END

这就可以了。
温馨提示:答案为网友推荐,仅供参考
相似回答