會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC16F819 中斷問題
新會員
註冊日期:
2月13日 16:39:17
所屬群組:
註冊會員
文章: 3
等級: 1; EXP: 10
HP : 0 / 2
MP : 0 / 0
離線
您好!
就選取 PIC16F819 作特性測試,發現如下問題。希望同業先進不吝賜教有助解決困難,謝謝。

*不能從中斷後返回主程式,我使用 TIMER 溢位作中斷試驗,但中
斷後只跳往 ORG 4 位置不能 RETFIE 。
* 使用 MPLAB IDE : V7.30
PROGRAMMER: PICSTART PLUS

測試中斷程式如下:

INT_VAR UDATA_SHR 0x70
w_temp RES 1 ; variable used for context saving
status_temp RES 1 ; variable used for context saving
TMR EQU H'1'
STATUS EQU H'3'
RA EQU H'5'
RB EQU H'6'
OPTI EQU H'81'
TRISA EQU H'85'
TRISB EQU H'86'
INTCON EQU H'0B'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY_A EQU H'21'
DELAY_B EQU H'22'
DELAY_C EQU H'23'
;**********************************************************************
RESET_VECTOR CODE 0x000 ; processor reset vector
goto main ; go to beginning of program
INT_VECTOR CODE 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
BCF INTCON,7 ;DISABLE GIE
BSF RB,0
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main
; remaining code goes here
CLRF STATUS
CLRF INTCON
BSF STATUS,5
MOVLW B'00000111' ;SET OPTION_REG
MOVWF OPTI
MOVLW B'00000000'
MOVWF TRISB
CLRF STATUS
BSF INTCON,5 ;ENABLE TMR0IE
CLRF RB
CLRF TMR
BSF INTCON,7 ;ENABLE GIE
TE
BTFSS RB,0
GOTO TE
CALL DELAY
BCF RB,0
SH
GOTO SH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; initialize eeprom locations
EE CODE 0x2100
DE 0x00, 0x01, 0x02, 0x03
DELAY
MOVLW B'10000111'
MOVWF DELAY_C
DDDD
MOVLW B'11111111'
MOVWF DELAY_B
CCC
MOVLW B'11111111'
MOVWF DELAY_A
A
DECFSZ DELAY_A,1
GOTO A
DECFSZ DELAY_B,1
GOTO CCC
DECFSZ DELAY_C,1
GOTO DDDD
RETURN
END ; directive 'end of program'

2月15日 01:35:56
轉換PDF檔 列印


Re: PIC16F819 中斷問題
高級會員
註冊日期:
2009/04/07 13:30
所屬群組:
註冊會員
文章: 133
等級: 10; EXP: 58
HP : 0 / 239
MP : 44 / 5510
離線
哦 ~ ~ ~ !

這跟它本身所設計的中斷流程控制有關,

因為只有一個中斷入口,

所以當發生中斷時,

進入 0004 中斷程序時, 已經控制令 GIE = 0 了,

避免在執行中斷程序時, 出現了又要再中斷的情形,

而且在中斷尾端執行 RETFIE 要離開返回時,

會重新令 GIE = 1, 好讓中斷功能可以有效。




所以, 雖然你的想法應該是沒錯的, 但是跟它的設計沖突了.

你可以先把中斷裡 GIE = 0 改為 TMR0IE = 0 試試。

2月15日 09:14:11
轉換PDF檔 列印


Re: PIC16F819 中斷問題
新會員
註冊日期:
2月13日 16:39:17
所屬群組:
註冊會員
文章: 3
等級: 1; EXP: 10
HP : 0 / 2
MP : 0 / 0
離線
HI, OUO.
多謝提供意見,但該程式設計只希望測試16F819進出中斷之特性,
所以只是一次性的進出,OFF GIE 是必要設定,如果一切正常。RETFIE
後RB,0在數秒後輸出是 0。

2月15日 11:43:59
轉換PDF檔 列印


Re: PIC16F819 中斷問題
資深會員
註冊日期:
2004/08/16 13:52
來自 台灣台南
所屬群組:
註冊會員
文章: 762
等級: 24; EXP: 93
HP : 0 / 598
MP : 254 / 21882
離線
進中斷之後必須把中斷旗標清楚,不然會一直進中斷.
PIC 不會幫你清旗標,你要自己做.

TMR0IF = 0;

2月16日 10:50:15
_________________
有正確的問題,才有正確的答案;
轉換PDF檔 列印


Re: PIC16F819 中斷問題
新會員
註冊日期:
2月13日 16:39:17
所屬群組:
註冊會員
文章: 3
等級: 1; EXP: 10
HP : 0 / 2
MP : 0 / 0
離線
HI,YIMING

多謝提供意見,但當進入中斷後 GIE 早設定為 0 ,絕不可能再發生二次中斷。
16-2-17

2月16日 12:26:24
轉換PDF檔 列印


Re: PIC16F819 中斷問題
資深會員
註冊日期:
2004/08/16 13:52
來自 台灣台南
所屬群組:
註冊會員
文章: 762
等級: 24; EXP: 93
HP : 0 / 598
MP : 254 / 21882
離線
旗標沒清除,離開中斷,會立刻又中斷.

2月16日 20:40:29
_________________
有正確的問題,才有正確的答案;
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088221 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project