看板 ASM 關於我們 聯絡資訊
最近在試著做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
ruemann:你怎麼判斷中斷沒再度進入? 09/05 21:06
cses:我讓計數器持續做計數,在中途給他輸入中斷訊號 09/05 22:26
cses:計數的數值利用一組LED做2進位顯示顯示@@" 09/05 22:27
cses:我有把中斷訊號換成開關給低電位的方式,第一次案下時有讓 09/05 22:28
cses:計數器數值歸零重新計算,但之後再按就沒反應了... 09/05 22:28
cses:要把程式Reset之後的第一次中斷就會有動作.. 09/05 22:30
Deltaguita:中斷之後你有把TF1重新規0嗎? 09/06 03:05
narcissusli:TF1不清除也不會影響計時器運作吧? 09/06 09:30
narcissusli:A的值有被改變嗎? 進INT0的時候... P1會不會誤動作? 09/06 09:31
cses:計數器都會正常運作,P1在中斷之後會歸零繼續重頭做計數 09/06 10:13
cses:看P1在LED上顯示的數值計數器的P1輸出是正常的... 09/06 10:19
cses:但之後的中斷訊號都不能上計數器再次歸零... 09/06 10:20
Deltaguita:抱歉看錯了 我以為是計時中斷^^" 09/06 11:03
Deltaguita: 0003H 不是INT0的中斷點嗎 怎麼會是開EX1 09/06 11:16
Deltaguita:你改改成SETB EX0就可以正常動作了 09/06 11:20
cses:感謝D大的提醒 成功了 09/06 12:38
cses:我把中斷程式的位置改到0013H、再把計數器的TH1、TL1再歸零 09/06 12:39
cses:就可以正常中斷了 :) 09/06 12:39