作者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