作者wodada (wodada)
看板ASM
標題[問題] 關於中斷副程式問題
時間Wed Dec 26 20:26:21 2012
各位版友前輩,大家好
小弟最近在研究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
1F:→ hongsiangfu:只要P3.3處於低態,就會一直執行中斷函式。 12/26 21:00
2F:→ hongsiangfu:要不要改用負緣觸發,這樣就只會執行一次。 12/26 21:01
3F:→ wodada:感謝h大,我成功了 12/28 17:53