[問題] 關於中斷副程式問題

看板ASM作者 (wodada)時間11年前 (2012/12/26 20:26), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
各位版友前輩,大家好 小弟最近在研究8051,所用的語言為ASM 目前研究中斷部分,但有幾個問題相當不解 程式碼如下: ORG 0000H ;主程式起始位址 JMP Main ORG 0013H ;外部中斷1起始位址 JMP INT_01 Main: MOV SP,#60H ;將堆疊指標移到高位元 MOV TCON,#00000000B ;設定INT1為低準位觸發 SETB EA ;致能中斷系統 SETB EX1 ;致能外部中斷1 SETB P3.3 ;設定INT1接腳為輸入腳 CLR P2.0 ; LOOP: MOV A,#00000000B ;設定LED燈全亮 MOV P1,A CALL DELAY ;呼叫延遲副程式 CALL DELAY MOV A,#11111111B ;設定LED燈全滅 MOV P1,A CALL DELAY ;呼叫延遲副程式 CALL DELAY JMP LOOP ;========Interrupt 1 =========================== INT_01: PUSH ACC CLR EA PB_DOWN: CALL DELAY_1 JB P3.3,PB_DOWN MOV R2,#10 MOV A,#11110000B ;設定中斷顯示燈號 LOOP1: MOV P1,A MOV R3,#10 WAIT: CALL DELAY DJNZ R3,WAIT CPL A DJNZ R2,LOOP1 ; PB_UP: CALL DELAY_1 JNB P3.3,PB_UP SETB EA POP ACC RETI ;======Delay function =========== DELAY: MOV R0,#250 DL1: MOV R1,#200 DL2: DJNZ R1,DL2 DJNZ R0,DL1 RET ; DELAY_1: MOV R0,#250 ;延遲中斷偵測 DJNZ R0,$ RET ; END 小弟目前有個問題: 1.當我主程式跳到中斷副程式執行時,正常來說執行完應該會回到主程式 可是當我P3.3一用下去,除非再拔起來,要不然會一直停留在副程式區域 請問各位前輩,我的程式哪裡出了問題??? 謝謝!! PS:由於我的P3.3是接腳,我以我用杜邦線,一邊接地,另一邊接P3.3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.40.244

12/26 21:00, , 1F
只要P3.3處於低態,就會一直執行中斷函式。
12/26 21:00, 1F

12/26 21:01, , 2F
要不要改用負緣觸發,這樣就只會執行一次。
12/26 21:01, 2F

12/28 17:53, , 3F
感謝h大,我成功了
12/28 17:53, 3F
文章代碼(AID): #1GskpmYA (ASM)