Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
版主
|
看不到 DIM_CD 副程式的功能? 猜想是 Delay 吧! 應該沒有人會在中斷裡作軟體的 Delay 吧! 若有哪就是流程架構不盡周嚴所致。
發表於: 2008/4/23 21:06
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
新會員
|
感謝Ryang指導。我加了這個指令動作。我現在又出現問題了,現在可執行中斷副程式了,但是執行中斷後再回到主程式會DELAY 20多秒,請問這是那裡出了問題。我所寫的測試程式的主要動作為:主程式中有兩個LED,各閃五次互換。而執行中斷時會另一個LED閃五次。以下是我修改後的程式,其中我只貼主程式及中斷副程式部份:
MAIN2:
發表於: 2008/4/23 19:59
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
版主
|
有漏掉一個動作,就是在清除 RBIF 前一定要 PORTB 做一次假的讀取動作。
: movf PORTB,W ; 假讀取,讓 Interrupt-On Pin Change 記住目前的輸入位準 BCF INTCON,RBIF :
發表於: 2008/4/23 16:04
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
新會員
|
謝謝yiming指導,我試過了。在DEBUGGER MODE 用 按 animate 是無法進入 中斷,但是用run就可以進入中斷。
但是我現在又出現問題了,當我執行完中斷後會delay 20 多秒才回到主程式,同時我能確定是有回到主程式中斷點。我想再請教各位前輩。謝謝。
發表於: 2008/4/23 14:53
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
資深會員
|
ICD2的中斷向量無法使用單步,必需在中斷副程式設斷點然後使用Free run,如果有中斷產生自然會停在斷點位置.
發表於: 2008/4/23 8:50
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
新會員
|
謝謝slipknot的指導,但是還是不行,所以我把我的測試貼上來
以下我所寫的測試程: #INCLUDE P16F887.INC INT_VAR UDATA_SHR D1 RES 1 D2 RES 1 D3 RES 1 NUM RES 1 NUMIDX RES 1 ONEIDX RES 1 TENIDX RES 1 RB2IP RES 1 RB3IP RES 1 W_TEMP RES 1 STATUS_TEMP RES 1 PORTD_TEMP RES 1 RESET_VECTOR CODE 0X000 NOP GOTO START INT_VECTOR CODE 0X004 GOTO INTERRUPT MAIN CODE START: ;==================INITIALIZING PORTB BANKSEL ANSELH CLRF ANSELH BANKSEL CM2CON1 CLRF CM2CON1 ;BANKSEL WPUB ;CLRF WPUB BANKSEL IOCB MOVLW B'00000100' MOVWF IOCB BANKSEL TRISB MOVLW B'11111111' MOVWF TRISB ;BANKSEL PORTB ;CLRF PORTB ;=Setting up System-CLock to be 31KHz BANKSEL OSCCON MOVLW B'01110001' MOVWF OSCCON ;======PORTD(OUT) BSF STATUS,RP0 CLRF TRISD MOVLW H'00' MOVWF PORTD ;======MAIN PROGRAM BANKSEL OPTION_REG MOVLW B'00000000' MOVWF OPTION_REG BANKSEL INTCON MOVLW B'10001000' MOVWF INTCON MAIN: BCF PORTD,0 BSF PORTD,0 GOTO MAIN INTERRUPT: MOVWF W_TEMP SWAPF STATUS,W MOVWF STATUS_TEMP IT_LOOP: BCF RTD,1 BSF PORTD,1 SWAPF STATUS_TEMP,W MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W BCF INTCON,RBIF RETFIE END 我想請問是否還有那些沒有設定到謝謝。
發表於: 2008/4/22 18:07
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
初級會員
|
有沒有可能 interrupt vector的address設錯了 PIC16部分是0x04
發表於: 2008/4/22 16:04
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
新會員
|
謝謝slipknot的指導。
因為,我需要2 個外部中斷源,所以用PORTB 的INTERRUPT ON CHANGE PIN 。我有試著設定ICOB(INTERRUPT ON CHANGE PIN )及RBIE、GIE,但是情況還是一樣,不知是那裡出錯了,還請各位指導。謝謝。
發表於: 2008/4/22 12:23
|
|||
|
Re: INTERRUPT-ON-CHANGE問題
|
||||
---|---|---|---|---|
初級會員
|
請記得IOCB要設定 RBIE=1之外 GIE也要=1
如果要練習外部中斷的話 建議使用INT PIN當中斷來源 會比較好一點 ISR裡面也要記得把RBIF CLEAR掉
發表於: 2008/4/22 10:12
|
|||
|