ad.c

来自「ti公司msp430单片机自带的ad转换程序」· C语言 代码 · 共 66 行

C
66
字号
/*************************************************************
*   文件名称:adc12.c
*   文件说明:adc12操作
*
*************************************************************/
#include <msp430x16x.h>

#define REF 33  //大于20mv输出1                                

unsigned char buffer;
unsigned char count;
/************************************************************
*   初始化ADC12
************************************************************/
void init_ADC12(void)
{
     ADC12CTL0   = ADC12ON + REFON + REF2_5V + SHT0_2;// 设置ADC12 的内部参考电压2.5伏 
     ADC12CTL1   = SHP;                               // 设置使用采样时钟 
     ADC12MCTL0  = SREF_1;                            // 选择通道A0,2.5V参考电压
     ADC12IE    |= 0x01;                              // 使能中断 
     ADC12CTL0  |= ENC;                               // 使能转换 
     
}
/***********************************************************
*   启动  ADC12
************************************************************/
void start_ADC12()
{
     ADC12CTL0 |= ADC12SC;
}

/***********************************************************
*   中断向量
************************************************************/
#pragma vector = ADC_VECTOR 
 __interrupt void  ADC_Interrupt(void)
{
    buffer = ADC12MEM0;
    if(buffer >=REF)
    count += 1;      //大于20mv加1  
    LPM3_EXIT;	//退出中断后退出低功耗模式         
}

void main(void)
{
    unsigned int iq0;
    WDTCTL=WDTPW+WDTHOLD; 
    //使用XT2晶振
    BCSCTL1 &= ~XT2OFF;//打开XT2振荡器
    do
    {
      IFG1 &= ~OFIFG;//清除振荡器失效标志
      for(iq0=0XFF;iq0>0;iq0--);//延时,等待XT2起振
    }
    while ((IFG1 & OFIFG)!= 0);//判断XT2是否起振
    BCSCTL2=SELM_2+SELS;//选择MCLK、SMCLK为XT2 
    _EINT();	
    init_ADC12();
    while(1)
    {
      start_ADC12();
      LPM3;
    }
}

⌨️ 快捷键说明

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