请教斑竹,为什么调试窗口检测的结果与程序设计不符

2019-03-24 12:02发布

我在定时中断程序中实现软件启动adc12采样转换,中断程序的编写思想是:首先设置ENCADC12SC 启动adc采样,然后就是等待,实时判断ADC12IFG3这个转换标志位是否为1,当标志位置1时,我认为转换完成,这时读取ADC12MEM3的值并赋给results,具体程序如下:
///interrupt [TIMERA0_VECTOR] voidTimerA_ISR(void)
#pragmavector=TIMERA0_VECTOR__interrupt voidTimerA_ISR(void){   _DINT();                                        //disablethe interrupt   ADC12CTL0|= ENC+ADC12SC;     //软件启动adc12    do   {       _NOP();   }                                                  //等待adc模数转换完成,若转换完成                                                       //ADC12IFG3将被置位  while(ADC12IFG&BIT3==0);   results =ADC12MEM3;                   //若ADC12IFG3=1,读取ADC12MEM3数值并赋给中间变量results   ADC12CTL0&= ~ENC;                  //disable convert   _EINT();                                       //enable theinterrupt}      在调试中,发现watch窗口中的中间变量results值并不等于 ADC12MEM3的值,而是等于上一次中断时ADC12MEM3的值(举例说明:第一次中断时 ADC12MEM3 =0x256results=0,第二次中断时 ADC12MEM3 =0x512 results= 0x256 ),请问这是为什么?另外,我这种启动ADC12单通道单次采样的程序写法是否正确? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
wstt
2019-03-25 10:55
中断里面的那句中断关闭没有意义,其实已经关掉了

一周热门 更多>

相关问题

    相关文章