MSP430F149学习之路——AD

时间:2023-03-09 07:05:14
MSP430F149学习之路——AD

代码一:Timer_A触发转换

 #include <msp430x14x.h>
void main()
{
WDTCTL = WDTPW + WDTHOLD;
P6SEL |= BIT0;
TACTL |= TASSEL_2 + MC_2;
TACCTL1 = OUTMOD_3;
TACCR1 = 0X0FFF;
ADC12CTL0 = ADC12ON + SHT0_2;
ADC12CTL1 = SHS_1 + SHP;
while()
{
ADC12CTL0 |= ENC;
ADC12CTL0 |= ADC12SC;
while((ADC12IFG & ADC12BUSY) == );
ADC12CTL0 &= ~ENC;
}
}

代码二:ADC12序列通道多次转换

 #include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char uint results0;
uint results1;
uint results2;
uint results3; void int_clk()
{
BCSCTL1 &= ~XT2OFF;
BCSCTL2 |= SELS + SELM1;
do
{
IFG1 &= ~OFIFG;
for(int i=;i<;i++)
_NOP();
}while((IFG1 & OFIFG)==);
IFG1 &= ~OFIFG;
} void int_adc()
{
P6SEL |= 0X0F;
ADC12CTL0 = ADC12ON + MSC + SHT0_2 + REFON + REF2_5V;
ADC12CTL1 = SHP + CONSEQ_3;
ADC12MCTL0 = INCH_0;
ADC12MCTL1 = INCH_1;
ADC12MCTL2 = INCH_2;
ADC12MCTL3 = INCH_3;
ADC12IE = 0X08;
ADC12CTL0 |= ENC;
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12_ISR()
{
results0 = ADC12MEM0;
results1 = ADC12MEM1;
results2 = ADC12MEM2;
results3 = ADC12MEM3;
}
void main()
{
WDTCTL = WDTPW + WDTHOLD;
int_clk();
int_adc();
_EINT();
ADC12CTL0 |= ADC12SC;
}