不知道你把int_ad()放在主函数的什么地方了,希望是你发帖时遗漏了。其他的除了一些书写错误,好像我看不出其他问题了。
如果确认程序其他部分运行正常,就用TI的官方例程先试试硬件是否有问题,然后再用你自己的程序测试。
以下是检测A0的例程,改成A2先试试。
-
- #include "msp430x22x4.h"
- void main(void)
- {
- WDTCTL = WDTPW + WDTHOLD; // Stop WDT
- ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE; // ADC10ON, interrupt enabled
- ADC10AE0 |= 0x01; // P2.0 ADC option select
- P1DIR |= 0x01; // Set P1.0 to output direction
- for (;;)
- {
- ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start
- __bis_SR_register(CPUOFF + GIE); // LPM0, ADC10_ISR will force exit
- if (ADC10MEM < 0x1FF)
- P1OUT &= ~0x01; // Clear P1.0 LED off
- else
- P1OUT |= 0x01; // Set P1.0 LED on
- }
- }
- // ADC10 interrupt service routine
- #pragma vector=ADC10_VECTOR
- __interrupt void ADC10_ISR(void)
- {
- __bic_SR_register_on_exit(CPUOFF); // Clear CPUOFF bit from 0(SR)
- }
|