鬆翰單片機_SN8F570310——ADC

SN8F570310——ADC測試


平臺:鬆翰 SN8F570310spa

官網:http://www.sonix.com.tw/masterpage-twcode

 

 


 

 

 

 

 


 

 

 


 

 

        

 


 

 

 


 

 

 


 

 

 

 


 

 

 


 

 

 


 

 

 

 


 

 代碼示例:blog

 

#include "Equ.h"

/*
        硬件:
                    P13    AIN10
*/


/*
        1 將 ADC 輸入通道設置爲輸入模式(由 PnM 寄存器設置);
        2 必須禁止 ADC 輸入通道的內部上拉電阻(由 PnUR 寄存器設置);
        3 選擇和使能 ADC 輸入通道(由 CHS[3:0]位和 GCHS 位設置);
        4 必須將 ADC 模擬輸入通道的控制位設置爲 1(由 PnCON 寄存器設置);
        5 選擇 ADC 高參考電壓(由 VREFH 寄存器設置);
        6 選擇 ADC 時鐘頻率(由 ADCKS[1:0]位設置);
        7 設置 ADENB 位後, ADC 準備開始轉換。
*/

void adc_init(void)
{
    P1M    &= ~0x08;                //1.輸入模式
    P1UR   &= ~0x08;                //2.禁止上拉
    ADM    |=  0x8A;                   //3.選擇和使能 ADC 輸入通道   1010
    P1CON  |=  0x08;                 //4.模擬輸入通道的控制位設置爲 1               
    VREFH   =  1<<2;                    //5.高參考電壓 VDD
    ADR     =  1<<6 | 2<<4 ;  //6.ADC 時鐘頻率

    IEN2    = 3<<1;           //開啓ADC中斷
    ADM    |= 0X40;           //7.開始轉換
}    
    
void ADCInterrupt(void) interrupt ISRAdc
{
    unsigned int ADCBuffer = 0; // data buffer
    unsigned long p;
    if ((IRCON2 &0x01) == 0x01){
        IRCON2 &= ~0x01;    //清除ADC標誌位
            
        ADCBuffer = (ADB << 4) | (ADR &0x0f);
        for(p=0;p<30000;p++){}    
        for(p=0;p<30000;p++){}
        S0BUF =  ADCBuffer;
        
        ADM  &= ~0X20;   //轉換結束,手動清零
        ADM  |=  0X40;   //開始轉換        
    }
}

 

 

 測試:it

復位按鍵和電源ast

 

 

 

 

 

 

筆記:class


 

1.  11個輸入通道,12位數字信號採集因此分辨率爲2^12=4096 ,參考高壓可設置與參考低壓爲零,則將外部電壓(參考低壓—參考高壓)轉換爲12位數字信號(0—4096);硬件

相關文章
相關標籤/搜索