專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導入到強大技術(shù)支援服務 全程貼心伴隨服務,創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機資訊,行業(yè)消息以及公司新聞動態(tài)
深圳市英銳恩科技有限公司:臺灣麥肯單片機(Micon MDT單片機)亞太地區(qū)A級代理商
DSPIC33F例程之ADC例程
//母體為DSPIC33FJ64GP206,編譯器為C30測試版,
#include
unsigned int adc_buf[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //存放AD轉(zhuǎn)換結(jié)果的數(shù)組
//====================ADC初始化函數(shù)==========================
void adc_init(void)
{
TRISB = 0XFFFF; //SET PORTB INPUT
AD1PCFGL = 0x0000; //選擇端口的模式,模擬/數(shù)字,0表示選中模擬采樣
AD1CON1bits.ADSIDL= 0; //AD模塊一直工作,即使在空閑模式
AD1CON1bits.AD12B = 0; //ADC工作在10BIT模式
AD1CON1bits.ASAM = 0; //選擇了手動采樣模式,當SAMP位置1后才開始采樣
AD1CON2bits.VCFG = 0; //參考電壓選擇,bit15:13,000選擇電源參考,001表示Vref+
AD1CON3bits.ADRC = 1; //1表示使用內(nèi)部RC時鐘,0表示使用系統(tǒng)FOSC時鐘
AD1CON3bits.ADCS = 8; //調(diào)節(jié)Tcy與Tad的關(guān)系,范圍0~63,63是最慢的
AD1CON2bits.CSCNA = 0; //不自動掃描輸入
AD1CON2bits.CHPS = 0; //同時掃描的通道數(shù),現(xiàn)在只選擇了一個CH0
AD1CON1bits.SSRC = 7; //轉(zhuǎn)換觸發(fā)源選擇位,111表示采樣結(jié)束自動轉(zhuǎn)換
AD1CON3bits.SAMC = 4; //自動采樣時間為31個Tad,范圍0~31
AD1CON1bits.FORM = 0; //數(shù)據(jù)格式,整數(shù)格式,右對齊
AD1CON2bits.ALTS = 0; //總是使用多路開關(guān)A來作為通道選擇位
AD1CHS0bits.CH0NA = 0; //通道0的反向輸入端為-Vref,這里為地。
AD1CON1bits.ADON = 1; //打開ADC模塊
}
//=========================讀取一個通道的值==============================
void read_adc(unsigned char ch)
{ AD1CHS0bits.CH0SA = ch; //0~15分別表示選中16個通道之一
AD1CON1bits.SAMP = 1; //開始采樣,采樣結(jié)束后自動開始轉(zhuǎn)換
while(!AD1CON1bits.DONE) //此位為0表示正在采樣中
;
AD1CON1bits.DONE = 0; //也可以不清零,在新的轉(zhuǎn)換開始時,硬件自動清零
adc_buf[ch]=ADC1BUF0&0x03ff;
}