作者cses (5858)
看板ASM
标题[问题] AT89S51 计数器外部中断
时间Wed Sep 5 18:18:41 2012
最近在试着做8051计数器外部中断的指令
第一次用组合语言,照着书做出了一个可以读取外部脉波次数的计数器
再加上一个每五秒一次脉波的中断讯号
但是每次只有第一次计数器有中断,之後的中断就没有作用了
(计数器中断归零一次後还能持续进行计数)
但是中断讯号不管再怎样给都不会再动作
以下是程式码
ORG 0000H
JMP MAIN
ORG 0003H
MOV A,0H
MOV P1,
#11111111B
RETI
MAIN: SETB P3.2
SETB IE1
SETB EX1
SETB EA
START:
MOV TMOD,
#11010000B
LOOP:
MOV TH1,#0
MOV TL1,#0
SETB TR1
WAIT:
MOV A,TL1
CPL A
MOV P1,A
AJMP WAIT
END
先谢谢大家 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.110.46.185
1F:推 ruemann:你怎麽判断中断没再度进入? 09/05 21:06
2F:→ cses:我让计数器持续做计数,在中途给他输入中断讯号 09/05 22:26
3F:→ cses:计数的数值利用一组LED做2进位显示显示@@" 09/05 22:27
4F:→ cses:我有把中断讯号换成开关给低电位的方式,第一次案下时有让 09/05 22:28
5F:→ cses:计数器数值归零重新计算,但之後再按就没反应了... 09/05 22:28
6F:→ cses:要把程式Reset之後的第一次中断就会有动作.. 09/05 22:30
7F:→ Deltaguita:中断之後你有把TF1重新规0吗? 09/06 03:05
8F:→ narcissusli:TF1不清除也不会影响计时器运作吧? 09/06 09:30
9F:→ narcissusli:A的值有被改变吗? 进INT0的时候... P1会不会误动作? 09/06 09:31
10F:→ cses:计数器都会正常运作,P1在中断之後会归零继续重头做计数 09/06 10:13
11F:→ cses:看P1在LED上显示的数值计数器的P1输出是正常的... 09/06 10:19
12F:→ cses:但之後的中断讯号都不能上计数器再次归零... 09/06 10:20
13F:→ Deltaguita:抱歉看错了 我以为是计时中断^^" 09/06 11:03
14F:→ Deltaguita: 0003H 不是INT0的中断点吗 怎麽会是开EX1 09/06 11:16
15F:→ Deltaguita:你改改成SETB EX0就可以正常动作了 09/06 11:20
16F:→ cses:感谢D大的提醒 成功了 09/06 12:38
17F:→ cses:我把中断程式的位置改到0013H、再把计数器的TH1、TL1再归零 09/06 12:39
18F:→ cses:就可以正常中断了 :) 09/06 12:39