<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        新唐M051 ADC模數轉換程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年09月01日   【字體:

        以下程序是基于新唐M051單片機運行:

         

        /******************************************************************
         *注   意:硬件上的AVDD一定要接上基準電壓
        ******************************************************************/
        #include "SmartM_M0.h"

        #define DEBUGMSG              printf
        #define ADC_CLOCK_DIVIDER     0x00040000
        #define ADC_CLK_Source        0x00000000
        #define AREF_VOLTAGE          4480
             
        STATIC VOID AdcInit(VOID)
        {
         if(ADC_CLK_Source==0x00000004)
            {
                PLLCON |= PLL_SEL;
                PLL_Enable();
                /* 等待PLL穩定 */
          while((CLKSTATUS & PLL_STB) == 0); 
         }
            /* 復位ADC */   
            set_ADC_RST;
            clr_ADC_RST;
         /* ADC時鐘使能 */      
            set_ADEN_CLK;
            if (ADC_CLK_Source==0x00000000 )
            {
                ADCClkSource_ex12MHZ;
            }
            else if(ADC_CLK_Source==0x00000004 )
            {
                ADCClkSource_PLL;
            }
            else if(ADC_CLK_Source==0x00000008 )
            {
                ADCClkSource_int22MHZ;
            }
            /* 設置ADC分頻器 */
            CLKDIV=ADC_CLOCK_DIVIDER; 
         
            /* ADC使能 */
            set_ADEN;
            set_CALEN;   
         while(!(ADCALR&CALDONE));
            /* 單次轉換模式 */
            setAD_SIG;             
            clr_DIFFEN;
         /* 設置ADC通道 */
            set_CHEN0;
            /* 使能P1.0為模擬輸入引腳 */
            set_ADC0_channel;
         /* 禁止P1.0數字輸入通道 */
         P1_OFFD |= OFFD0;
            /* 設置P1.0引腳為輸入模式Configure P1.0 as input mode */
            P10_InputOnly;
            /* 清除ADC中斷標志位 */
            set_ADF;      
        }
        /****************************************
        *函數名稱:main
        *輸    入:無
        *輸    出:無
        *功    能:函數主體
        ******************************************/
        INT32 main(VOID)
        {
             UINT32 unVoltageValue;
                                   
          PROTECT_REG          //ISP下載時保護FLASH存儲器
          (
           PWRCON |= XTL12M_EN;       //默認時鐘源為外部晶振
           while((CLKSTATUS & XTL12M_STB) == 0);    //等待12MHz時鐘穩定 
          
           CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M;//設置外部晶振為系統時鐘 
          )
          UartInit(12000000,9600);       //波特率設置為9600bps
          AdcInit();
          while(1)
          {
             set_ADST;            //啟動ADC
          while(ADSR&ADF==0);        //等待ADC結束
          set_ADF;          //清空ADC結束標志位
          unVoltageValue = AREF_VOLTAGE*(ADDR0&0xFFF)/4096;//將ADC值轉換為電壓值
          DEBUGMSG("Voltage %d mv \r\n",unVoltageValue);
          Delayms(500);
          }
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮