看板 ASM 關於我們 聯絡資訊
各位版友前輩,大家好 小弟最近在研究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
hongsiangfu:只要P3.3處於低態,就會一直執行中斷函式。 12/26 21:00
hongsiangfu:要不要改用負緣觸發,這樣就只會執行一次。 12/26 21:01
wodada:感謝h大,我成功了 12/28 17:53