求汇编程序指错:利用计数器T1(p3.5)记录脉冲的个数,每计满10个脉冲,使灯亮1s,然后重新计数。
现在这个程序可以计数10个脉冲然后灯亮1s了,但是灯灭了之后无法重新计数使灯再亮1s。也就是不能循环。不解……求助……(求计数和计时都用中断的方法)
ORG 0
SJMP MAIN
ORG 000BH
SJMP TIMER
ORG 001BH
SJMP COUNT
ORG 0030H
MAIN:SETB EA
SETB ET0
SETB ET1
SETB P1.0
MOV TMOD,#61H
MOV TL1,#0F6H
MOV TH1,#0F6H
SETB TR1
SJMP $
COUNT:MOV TL0,#0C0H
MOV TH0,#63H
CPL P1.0
SETB TR0
RETI
TIMER:INC a
CJNE a,#19H,TIME
CPL P1.0
MOV TL0,#0C0H
MOV TH0,#63H
RETI
TIME:CLR TF0
SETB EA
SETB ET0
MOV TMOD,#01H
MOV TL0,#0C0H
MOV TH0,#63H
SETB TR0
JNB TF0,$
SJMP TIMER
END
答案:ORG 0
SJMP MAIN
ORG 000BH
SJMP TIMER
ORG 001BH
SJMP COUNT
ORG 0030H
MAIN:
SETB EA
;SETB ET0
SETB ET1
;SETB P1.0
MOV TMOD,#61H
MOV TL1,#0F6H
MOV TH1,#0F6H
SETB TR1
SJMP $
COUNT:
MOV TL0,#0C0H
MOV TH0,#63H
CPL P1.0
SETB ET0
SETB TR0
RETI
TIMER:
INC a
CJNE a,#19H,TIME
MOV A,#0 ;重新赋0
CPL P1.0
CLR ET0 ;关T0中断
CLR TR0
;MOV TL0,#0C0H
;MOV TH0,#63H
RETI
TIME:
CLR TF0
;SETB EA
;SETB ET0
; MOV TMOD,#01H
MOV TL0,#0C0H
MOV TH0,#63H
SETB TR0
JNB TF0,$
SJMP TIMER
END
其他:天不知道也
上一个:一个c语言程序,将它转为汇编程序怎么写?51单片机的问题
下一个:汇编 在屏幕上显示AX的内容