• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
  • slider image 488
  • slider image 491
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: INTERRUPT-ON-CHANGE問題
#11
新會員
新會員


查看用戶資訊
謝謝Ryang的指導。因為我想單純作INTERRUPT ON CHANGE的測試所以我才在中斷副程式中加了 DIM_CD Delay ,如果有其它好的方法請指導一下。同時我也找出DELAY 20 多秒才回主程的原因,是因為主程式中的DELAY副程式和中斷的DELAY副程式共用,造成DELAY副程式中某個數又從0開始計數。同時我把我的中斷副程式貼出來請各位前輩指導一下:
INTERRUPT:

CALL BED BTFSS PORTB,2
GOTO CLR_RBINTF
:
:

CLR_RBINTF:
BANKSEL PORTB
MOVF PORTB,F
BCF INTCON,RBIF
RETFIE
這個主要是參考MICROCHIP AN566
再作修改,其中BED是DELAY副程式,因為我是用BUTTON作INTERRUPT ON CHANGE 所以我想須讓BUTTON等一段時間,等到電位狀態真正改變才去作 BTFSS PORTB,2判別的動作 。不知這個想法對不對,如果不對想再請教各位輩,那裡須再修改。謝謝各位前輩指導。

發表於: 2008/4/24 20:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#10
版主
版主


查看用戶資訊
看不到 DIM_CD 副程式的功能? 猜想是 Delay 吧! 應該沒有人會在中斷裡作軟體的 Delay 吧! 若有哪就是流程架構不盡周嚴所致。

發表於: 2008/4/23 21:06
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#9
新會員
新會員


查看用戶資訊
感謝Ryang指導。我加了這個指令動作。我現在又出現問題了,現在可執行中斷副程式了,但是執行中斷後再回到主程式會DELAY 20多秒,請問這是那裡出了問題。我所寫的測試程式的主要動作為:主程式中有兩個LED,各閃五次互換。而執行中斷時會另一個LED閃五次。以下是我修改後的程式,其中我只貼主程式及中斷副程式部份:
MAIN2:      
            
CLRF    RB2IP
            INCF    ONEIDX
            
            MOVLW    H
'05'
            
SUBWF    ONEIDX,W
            BTFSS    STATUS
,Z
            
GOTO    MAIN_LOOP
            CLRF    ONEIDX
MAIN3
:        
            
INCF    ONEIDX
            MOVLW    H
'05'
            
SUBWF    ONEIDX,W
            BTFSS    STATUS
,Z
            
GOTO    MAIN_LOOP1
            CLRF    ONEIDX
            
GOTO        MAIN2    
            
MAIN_LOOP
:
            
BSF        PORTD,1
            CALL    DIM_CD
            BCF        PORTD
,1
            CALL    DIM_CD
            
GOTO    MAIN2

MAIN_LOOP1
:
            
BSF        PORTD,2
            CALL    DIM_CD
            BCF        PORTD
,2
            CALL    DIM_CD
            
GOTO    MAIN3


INTERRUPT
:
            
MOVWF    W_TEMP
            SWAPF    STATUS
,W
            MOVWF    STATUS_TEMP
            BTFSC    PORTB
,2
            
GOTO    IT_LOOPEND
IT_LOOP
:            
            
INCF    RB2IP
            MOVLW    H
'05'
            
SUBWF    RB2IP,W
            BTFSS    STATUS
,Z
            
GOTO    IT_LOOP1
            CLRF    RB2IP
            
            
IT_LOOPEND
:        
            
SWAPF    STATUS_TEMP,W
            MOVWF    STATUS
            SWAPF    W_TEMP
,F
            SWAPF    W_TEMP
,W
            
            BANKSEL    PORTB
            MOVF    PORTB
,W
            
            BCF    INTCON
,RBIF
            RETFIE
IT_LOOP1
:
            
CALL    DIM_CD
            BSF    PORTD
,0
            CALL    DIM_CD
            BCF    PORTD
,0
            
GOTO    IT_LOOP

發表於: 2008/4/23 19:59
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#8
版主
版主


查看用戶資訊
有漏掉一個動作,就是在清除 RBIF 前一定要 PORTB 做一次假的讀取動作。
:
movf PORTB,W ; 假讀取,讓 Interrupt-On Pin Change 記住目前的輸入位準
BCF INTCON,RBIF
:

發表於: 2008/4/23 16:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#7
新會員
新會員


查看用戶資訊
謝謝yiming指導,我試過了。在DEBUGGER MODE 用 按 animate 是無法進入 中斷,但是用run就可以進入中斷。
但是我現在又出現問題了,當我執行完中斷後會delay 20 多秒才回到主程式,同時我能確定是有回到主程式中斷點。我想再請教各位前輩。謝謝。

發表於: 2008/4/23 14:53
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#6
資深會員
資深會員


查看用戶資訊
ICD2的中斷向量無法使用單步,必需在中斷副程式設斷點然後使用Free run,如果有中斷產生自然會停在斷點位置.

發表於: 2008/4/23 8:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#5
新會員
新會員


查看用戶資訊
謝謝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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#4
初級會員
初級會員


查看用戶資訊
有沒有可能 interrupt vector的address設錯了 PIC16部分是0x04

發表於: 2008/4/22 16:04
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#3
新會員
新會員


查看用戶資訊
謝謝slipknot的指導。
因為,我需要2 個外部中斷源,所以用PORTB 的INTERRUPT ON CHANGE PIN 。我有試著設定ICOB(INTERRUPT ON CHANGE PIN )及RBIE、GIE,但是情況還是一樣,不知是那裡出錯了,還請各位指導。謝謝。

發表於: 2008/4/22 12:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: INTERRUPT-ON-CHANGE問題
#2
初級會員
初級會員


查看用戶資訊
請記得IOCB要設定 RBIE=1之外 GIE也要=1
如果要練習外部中斷的話 建議使用INT PIN當中斷來源 會比較好一點 ISR裡面也要記得把RBIF CLEAR掉

發表於: 2008/4/22 10:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------