和同学讨论ADC10时遇到一个问题,使用序列通道时,好像不能从进行低功耗模式也不能判断ADC10IFG标志位, 只有第一次进了中断,以后就不进中断了,这是什么问题?
但是我如果用延时的话结果又能进中断,下面是程序,哪位大神帮我看下有什么问题,谢谢了
#include <msp430g2553.h>
int temp[2];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
ADC10CTL1 |= CONSEQ_1; //设置通道
ADC10CTL0 |= SREF_1 + REFON + REF2_5V;//设置参考电压2.5V
ADC10CTL1 |= ADC10SSEL_1 + SHS_0; //使用ADC10SC,选择ADC10OSC时钟
ADC10CTL1 |= INCH_1; //选择通道
ADC10AE0 = BIT0 + BIT1; //使能通道
ADC10CTL0 |= ADC10ON + ADC10SHT_2 + ADC10IE + MSC; //开启ADC10和选择采样时间中断使能
__enable_interrupt();
ADC10DTC0 = ADC10CT;
ADC10DTC1 = 2;
while(1)
{
while(1 == (ADC10BUSY & ADC10CTL1));//判断忙
ADC10SA = (int)temp;
ADC10CTL0 &= ~ENC;
ADC10CTL0 |= ADC10SC + ENC;
// LPM0; //使用低功耗模式或判断中断标志位的话,只有第一次能进,
//以后就进不去中断了,程序一直死循环
__delay_cycles(100000);//如果用这个延时的话,程序是能进入中断的
while(0 == (ADC10CTL0 & ADC10IFG));
// ADC10CTL0 &= ~ADC10IFG;
}
}
#pragma vector = ADC10_VECTOR
__interrupt void ADC10_ISR(void)
{
LPM0_EXIT;
}