This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于“msp430g2x33_adc10_10.c"的问题?



to:Lina Lian

原本想利用该程序学习ADC的使用方法,结果发现好像是不能用的。具体表现为:如果在CCS5中走单步,最后程序就停留在第90行,但没有执行该行。证据是:LaunchPAD的红灯没有熄灭。而且也没有进入过ADC的中断程序,这叫我如何查询ADC的转换结果。

  • Songlin Qin,

    我看了程序,具体如下所示。90行恰好是进入LPM0的下一行。MSP430 关于进入LPMx调试时有个特点:虽然调试指示执行到进入LPM0的下一行,其实当时的CPU是一直处于LPMx的。故你看到的单步调试一直停留在这里,说明CPU一直在LPM0,没有被唤醒。要想看到ADC的转换结果,不要单步调试,在ADC中断处理函数第98行设置断点,让程序一直运行,停在断点处的时候,再查看RAM 200h - 206h的值即可。你先试试看。O(∩_∩)O~

    Line89   __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
    Line90   P1OUT &= ~0x01;


  • 谢谢,但还有一个问题,这个程序进入LPMx方式后一直停留在90行。如果用一个中断把它唤醒,执行完中断程序后是否会回到90行继续完成90行任务,然后还能执行一次ADC任务,才再次停留在90行?

  • Songlin Qin,

    因为在中断处理函数中,是控制CPU退出LPM0,故从中断函数返回后,会回到90行继续完成90行任务,然后从for(;;;)开始处执行,直至再次进入LPM0。你可以在进入中断函数后开始单步调试观看。