⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc12.c

📁 ti公司msp430单片机自带的ad转换程序
💻 C
字号:
#include<MSP430x16x.h>
#include"adc12.h"
#include <math.h>

unsigned int ADC_BUF[100];
float ADC_BUF_SUM=0.0;
float Vin=0.0;
float averg=0.0;
float effect=0.0;
unsigned char count=0;     //对均方根进行30次累加
unsigned int nADC_Count=0;
extern unsigned int ADC_BUF[100];
extern unsigned char nADC_Flag;

void Init_ADC(void)
{
    P6SEL = 0X01;                     //设置P6.0为模拟输入通道         
    ADC12CTL0 &= ~ENC;                 
    ADC12CTL0 = ADC12ON+SHT0_1+REF2_5V+REFON; 
    ADC12CTL1 = SHP+SHS_1+CONSEQ_2;	
    ADC12MCTL0 = INCH_0+SREF_1;                 
    ADC12IE = 0x0001;                // Enable ADC12IFG.0		
    ADC12CTL0 |= ENC;		     //使能ADC转换

}
void Init_TimerA(void)
{
    TACTL = TASSEL_2 + TACLR+MC_1;    // 选择SMCLK,清除TAR,增记数模式
   // TACTL += ID1;
   // TACTL += ID0;    	 
    TACCTL0 &=~CCIE;                 // CCR0 中断不允许
    TACCTL1 = OUTMOD_3;             // Set/reset
    TACCR0 = 80-1;                 // Init TACCR0 w/ sample prd=CCR0+1
    TACCR1 = 10;  		
    return;
}
void Init_CLK(void)
{
    unsigned int i;
    BCSCTL1 &= ~XT2OFF;	             //打开XT2振荡器				
    do 
    {
	IFG1 &= ~OFIFG;              //清除振荡器失效标志
	for (i = 0xff; i > 0; i--);   //清除振荡器失效标志             
    }
    while ((IFG1 & OFIFG)!=0);    			
    BCSCTL2 = SELM_2+SELS;	//MCLK,SMCLK的时钟源为TX2CLK
}

#pragma vector=ADC_VECTOR
__interrupt void Adc()
{ 	
    unsigned char i;	                           
    ADC_BUF[nADC_Count] =ADC12MEM0;     // 读出转换结果 
    nADC_Count += 1;                    // 计数器加1
    if(nADC_Count == 100)               // 采集完100个点
    {
        ADC12CTL0 &= ~ENC;		// 关闭转换
        nADC_Count = 0;                 // 计数器清0
        for(i = 0;i < 100;i++)
        {
	    Vin=ADC_BUF[i]*2.5/4095.0;
	    Vin=pow(Vin,2);
	    ADC_BUF_SUM  += Vin;
        }
        averg =sqrt(ADC_BUF_SUM/100.0);
        effect +=averg;
        ADC_BUF_SUM=0.0;
        count++;
        ADC12CTL0 |= ENC;     //再次启动转换
        if(count==30)
        {
            ADC12CTL0 &=~ENC;     //关闭转换	
            effect=effect/30.0; 
        }
    }
}
  





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -