[問題] AT89S51 計數器外部中斷

看板ASM (組合語言)作者 (5858)時間12年前 (2012/09/05 18:18), 編輯推噓1(1017)
留言18則, 4人參與, 最新討論串1/1
最近在試著做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

09/05 21:06, , 1F
你怎麼判斷中斷沒再度進入?
09/05 21:06, 1F

09/05 22:26, , 2F
我讓計數器持續做計數,在中途給他輸入中斷訊號
09/05 22:26, 2F

09/05 22:27, , 3F
計數的數值利用一組LED做2進位顯示顯示@@"
09/05 22:27, 3F

09/05 22:28, , 4F
我有把中斷訊號換成開關給低電位的方式,第一次案下時有讓
09/05 22:28, 4F

09/05 22:28, , 5F
計數器數值歸零重新計算,但之後再按就沒反應了...
09/05 22:28, 5F

09/05 22:30, , 6F
要把程式Reset之後的第一次中斷就會有動作..
09/05 22:30, 6F

09/06 03:05, , 7F
中斷之後你有把TF1重新規0嗎?
09/06 03:05, 7F

09/06 09:30, , 8F
TF1不清除也不會影響計時器運作吧?
09/06 09:30, 8F

09/06 09:31, , 9F
A的值有被改變嗎? 進INT0的時候... P1會不會誤動作?
09/06 09:31, 9F

09/06 10:13, , 10F
計數器都會正常運作,P1在中斷之後會歸零繼續重頭做計數
09/06 10:13, 10F

09/06 10:19, , 11F
看P1在LED上顯示的數值計數器的P1輸出是正常的...
09/06 10:19, 11F

09/06 10:20, , 12F
但之後的中斷訊號都不能上計數器再次歸零...
09/06 10:20, 12F

09/06 11:03, , 13F
抱歉看錯了 我以為是計時中斷^^"
09/06 11:03, 13F

09/06 11:16, , 14F
0003H 不是INT0的中斷點嗎 怎麼會是開EX1
09/06 11:16, 14F

09/06 11:20, , 15F
你改改成SETB EX0就可以正常動作了
09/06 11:20, 15F

09/06 12:38, , 16F
感謝D大的提醒 成功了
09/06 12:38, 16F

09/06 12:39, , 17F
我把中斷程式的位置改到0013H、再把計數器的TH1、TL1再歸零
09/06 12:39, 17F

09/06 12:39, , 18F
就可以正常中斷了 :)
09/06 12:39, 18F
文章代碼(AID): #1GHoS4O8 (ASM)
文章代碼(AID): #1GHoS4O8 (ASM)