新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MSP430F149ADC12單通道單次轉換

        MSP430F149ADC12單通道單次轉換

        作者: 時間:2016-11-13 來源:網絡 收藏
        #include <msp430x14x.h>
        #define uint unsigned int
        #define uchar unsigned char
        static uchar adc_flag = 0 ;
        uint AD_TEMP = 0 ;
        void int_clk()
        {
        uchar i ;
        BCSCTL1&=~XT2OFF; //打開XT振蕩器
        BCSCTL2|=SELM1+SELS; //MCLK為8MHz,SMCLK為8MHz
        do
        {
        IFG1&=~OFIFG; //清除振蕩錯誤標志
        for(i=0;i<100;i++)
        _NOP(); //延時等待
        }
        while((IFG1&OFIFG)!=0); //如果標志為1,則繼續循環等待
        IFG1&=~OFIFG;
        }
        int_adc()
        {
        P6SEL |= BIT0 ; //選擇AD通道
        ADC12CTL0 |= ADC12ON + SHT0_2 + REF2_5V + REFON ; //采樣保持時間為16個ADC12CLK
        /*ADC12ON ADC模塊電源控制位;
        REF2_5V 內部參考電壓選擇位0:1.5V  1:2.5V
        REFON 參考電壓模塊控制位0:關閉 1:打開*/
        ADC12CTL1 |= ADC12SSEL0 + ADC12SSEL1 ; //ADC12時鐘源選擇控制位 00ADC12OSC 01ACLK 10MCLK 11SMCLK
        ADC12MCTL0 = 0x10; // 連續轉換結束通道,CHANNEL = A0 參考選擇控制位
        ADC12IE |= 0x01; //使能A/D轉換器
        ADC12CTL0 |= ENC ; //AD轉換使能
        }
        #pragma vector = ADC_VECTOR
        __interrupt void ADC12ISR(void)
        {
        while((ADC12CTL1 & 0x01)== 1); //等待轉換完
        adc_flag = 1 ;
        AD_TEMP = ADC12MEM0 ; //設置AD轉換完成標志,并讀取ADC值
        }
        void main()
        {
        WDTCTL = WDTPW + WDTHOLD ;
        int_clk();
        int_adc();
        _EINT(); //使能中斷
        adc_flag = 1 ;
        while(1)
        {
        while(adc_flag == 1)
        {
        ADC12CTL0 |= ADC12SC ; //開啟轉換
        ADC12CTL0 &= ~ADC12SC ;
        adc_flag = 0 ; //清中斷標志
        }
        }
        }


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 江永县| 安达市| 江门市| 临漳县| 吉林市| 凉城县| 会理县| 上饶市| 峨边| 缙云县| 岗巴县| 博客| 夏邑县| 乌苏市| 大安市| 根河市| 固安县| 曲沃县| 台北市| 梅河口市| 苏尼特左旗| 邵东县| 铅山县| 浑源县| 吉隆县| 利津县| 哈巴河县| 大渡口区| 土默特左旗| 谢通门县| 阜宁县| 普兰县| 漳平市| 天津市| 中江县| 大埔区| 江源县| 张家港市| 襄樊市| 岳池县| 阳朔县|