• 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






Re: 關於PIC16F877的AD中斷...
#3
版主
版主


查看用戶資訊
有可能 AD 轉換的時間太快了,你的系統才跑500kHz,當你設定 GO bit 啟動AD 轉換後,程式還沒跑到RETFIE 下一個AD 中斷就再等你處理了。

建議將 BSF ADCON0,GO 擺在RETFIE 前面看看,或程式改用Polling的方式也可以。

發表於: 2005/8/16 17:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 關於PIC16F877的AD中斷...
#2
新會員
新會員


查看用戶資訊
可能是程式碼看起來有點麻煩,
所以比較少人回覆...

其實我的問題很簡單...
就是為什麼 BSF ADCON0,GO 這個動作在AD中斷裡面做時,
系統就會像是當機般的...不動了...?


麻煩各位高手了~

(現在我正在寫的程式都只好把 BSF ADCON0,GO 放到 MAIN_PROC 去了...這樣才可以正常執行)

發表於: 2005/8/16 16:48
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


關於PIC16F877的AD中斷...
#1
新會員
新會員


查看用戶資訊
AD轉換完之後,要再次執行轉換,必須將ADCON0中的GO設為HIGH。
但是我在AD中斷中做此動作,程式卻無法動作。
我是直接燒到PIC16F877接電路測試的。
直接在MPLAB上Debug看不出什麼異狀,一切都很正常。
(也就是用watch看register,跑的都很正常)
這個程式的目的是要將RA0輸入的類比轉成數位,並且輸出於PORTC,並且使用AD中斷的方法。
以下是不能跑的程式碼:


list 16f877
#include <p16f877.inc>
 
;---------- VAR SEG ----------
Temp_W        EQU    20H
Temp_STATUS    EQU    21H
 
;---------- CODE SEG ----------
 ORG    00H
 GOTO    MAIN_PROC
 ORG    04H
 GOTO    INT_PROC
 
INT_PROC
:
 MOVWF    Temp_W
 MOVF    STATUS
,0
 MOVWF    Temp_STATUS
 BTFSC    PIR1
,ADIF
 CALL    AD_INT
 MOVF    Temp_STATUS
,0
 MOVWF    STATUS
 MOVF    Temp_W
,0    
 RETFIE
 
AD_INT
:
 BCF    PIR1,ADIF
 MOVF    ADRESH
,0
 MOVWF  PORTC
 BSF    ADCON0
,GO    [color=009900];就是這裡!!將GO設為high[/color]
 RETURN
 
MAIN_PROC
:
 CALL    INITIAL
 GOTO    
$
 
INITIAL
:        [color=009900];初始值設定[/color]

 CLRF    PORTC
 BSF    STATUS
,RP0
 CLRF    TRISC
 BSF    TRISA
,0
;AD        [color=009900];AD的設定[/color]
 MOVLW    B'00001110'
 MOVWF    ADCON1
 BCF    STATUS
,RP0
 MOVLW    
B'11000101'
 MOVWF    ADCON0
INT        [color=009900];中斷的設定[/color]
 BSF    STATUS,RP0
 CLRF    PIE1
 BSF    PIE1
,ADIE
 BCF    STATUS
,RP0
 CLRF    PIR1
 CLRF    INTCON
 BSF    INTCON
,GIE
 BSF    INTCON
,PEIE
 RETURN
 END

但是如果我把MAIN_PROC改成以下程式碼


MAIN_PROC:
 CALL INITIAL
REP
:
 BSF    ADCON0,GO
 BTFSC    ADCON0
,GO
 GOTO    
$-1
 GOTO    REP

這樣的話,程式燒到PIC16F877之後,就可以正常執行了!
在PORTC也可看到轉成數位後的8 BIT!

但是這樣對於AD的使用會有點小麻煩,因為MAIN_PROC還想讓他做其他事情。
不知道為什麼會這樣呢?

請各位高手幫忙一下吧!
謝謝!

附加說明於2005/08/16:
對了!! 我是使用外部RC內部震盪
用示波器測過,fcyc約為500KHz~520KHz

發表於: 2005/8/15 16:41
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... ]

教育訓練中心

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