当前位置:编程学习 > 汇编语言 >>

求汇编程序指错:利用计数器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的内容

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,