您的位置 首页 编程

MSP430F149ADC12单通道单次转化

#includemsp430x14x.h>#defineuintunsignedint#defineucharunsignedcharstaticucharadc_flag=0;uintAD_T

#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 ; //清中止标志
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/273028.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部