Re: 多個通道的A/D轉換問題?謝謝
|
||||
---|---|---|---|---|
中級會員
|
謝謝你。我大概知道要怎麼做了,我再試看看了。真的很謝謝你的幫忙
發表於: 2007/3/30 21:32
|
|||
|
Re: 多個通道的A/D轉換問題?謝謝
|
||||
---|---|---|---|---|
中級會員
|
這個例子是曾百由老師的c18那本,裡面的例子10-3
#include <p18f4520.h> #include <delays.h> #include <adc.h> void main() { PORD=0x00; TRISD=0; ADCON0=0x01; //選擇AN0通道轉換,開啟ADC模組 ADCON1=0x0E;//做用VDD,VSS為參考鮮壓,設定AN0為類 比輸入 ADCON2=0x3A; CVRCON=0b1010 1100; CMCON =0b0000 0110; while(1) { if (COMCONbits.C1OUT) Delay10TCYx(5); ConvertADC(); while(BusyADC() ); PORD=ADRESH; } else PORD=0xFF; } } 我的問題是假如我今天,設了AN0~AN7通道都要AD轉換的話,在ConvertADC()這邊,我應該要怎麼指定我要轉換的通道呢?像他上面的例子,只有開通一個AN0,然後轉換完就存到別的暫存器,可是我不知道如果我今天轉換8個的時後,要怎麼轉換每一個指定的通道,然後把8個轉換結果存起來。
發表於: 2007/3/29 10:53
|
|||
|
Re: 多個通道的A/D轉換問題?謝謝
|
||||
---|---|---|---|---|
初級會員
|
1.宣告
ADNO AD1H AD1L AD2H AD2L AD3H AD3L AD4H AD4L AD5H AD5L AD6H AD6L 2. 使用1個計時器中斷 跟 AD中斷 計時器中斷為啟動AD AD中斷則將值放入 1-6AD站存器裡 3.程式 ADCH_TABLE: MOVF ADNO,W ANDLW H'07' ADDWF PCL RETLW CH1_VALUR RETLW CH2_VALUR RETLW CH3_VALUR RETLW CH4_VALUR RETLW CH5_VALUR RETLW CH6_VALUR CLRF ADNO CLRF ADNO GOTO ADCH_TABLE AD_DATA_TABLE: MOVF ADNO,W ANDLW H'07' ADDWF PCL GOTO DATA1 GOTO DATA2 GOTO DATA3 GOTO DATA4 GOTO DATA5 GOTO DATA6 GOTO DATA1 GOTO DATA1 TIMER_INT: BSF ADGO RETFIE AD_INT: CALL AD_DATA_TABLE INCF ADNO CALL ADCH_TABLE MOVWF ADCON0 RETFIE DATA1: MOVF ADRESH,W MOVWF AD1H MOVWF ADRESL,W MOVWF AD1L RETLW 0 DATA2: MOVF ADRESH,W MOVWF AD1H MOVWF ADRESL,W MOVWF AD2L RETLW 0 DATA3: MOVF ADRESH,W MOVWF AD3H MOVWF ADRESL,W MOVWF AD3L RETLW 0 DATA4: MOVF ADRESH,W MOVWF AD4H MOVWF ADRESL,W MOVWF AD4L RETLW 0 DATA5: MOVF ADRESH,W MOVWF AD5H MOVWF ADRESL,W MOVWF AD5L RETLW 0 DATA6: MOVF ADRESH,W MOVWF AD6H MOVWF ADRESL,W MOVWF AD6L RETLW 0 以上僅供參考 請依實際狀況做修改 TIMER 及 AD 時間請調配好
發表於: 2007/3/28 17:39
|
|||
|
Re: 多個通道的A/D轉換問題?謝謝
|
||||
---|---|---|---|---|
高級會員
|
如果是PIC 那就是 第一通道轉換完之後 把那兩個暫存器的值 搬到你自己設的暫存器 然後再去做第二通道轉換 以此類推...
如果要同步 八個通道一起轉換 之前好像有討論過(PIC應該不行 DSPIC 我就不知道了) 你可以找找看
發表於: 2007/3/28 17:28
|
|||
|
多個通道的A/D轉換問題?謝謝
|
||||
---|---|---|---|---|
中級會員
|
大家好:
我看了曾百由老師的書,他裡面的a/d轉換,都只有用到一個通道。 我的問題是: 1.假如我今天要使用六個通道轉換的話(偵測六個類比電壓值),應該要怎麼寫呢? 2.要怎麼把轉換的六個結果存起來呢?因為他不是只有(ADRESH及ADRESL)個暫存器而已嗎?
發表於: 2007/3/27 22:06
|
|||
|