打印

求助:为什么AD中断进不去呢?

[复制链接]
1739|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
teabottle|  楼主 | 2011-12-19 12:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ADC, dc, ADC1, se
RT                    求高手帮忙
void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  P6SEL |= 0x10;                            // P6.4 ADC option select
  ADC12CTL0 = ADC12SHT02 + ADC1      ;         // Sampling time, ADC12 on
  ADC12CTL1 = ADC12SHP;                     // Use sampling timer
  ADC12IE = 0x10;                           // Enable interrupt
  ADC12CTL0 |= ADC12ENC;
  P2DIR |= 0x08;                            // P2.3 output


  while (1)
  {

    ADC12CTL0 |= ADC12SC;                   // Start sampling/conversion

    __bis_SR_register(LPM0_bits + GIE);     // LPM0, ADC12_ISR will force exit
    __no_operation();                       // For debugger
  }
}

#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
{
  switch(__even_in_range(ADC12IV,34))
  {
  case  0: break;                           // Vector  0:  No interrupt
  case  2: break;                           // Vector  2:  ADC overflow
  case  4: break;                           // Vector  4:  ADC timing overflow
  case  6: break;                           // Vector  6:  ADC12IFG0

  case  8: break;                           // Vector  8:  ADC12IFG1
  case 10: break;                           // Vector 10:  ADC12IFG2
  case 12: break;                           // Vector 12:  ADC12IFG3
  case 14:                         // Vector 14:  ADC12IFG4
            if (ADC12MEM4 >= 0x7ff)                 // ADC12MEM = A4 > 0.5AVcc?
      P2OUT |= BIT3;                        // P2.3 = 1
    else
      P2OUT &= ~BIT3;                       // P2.3 = 0

    __bic_SR_register_on_exit(LPM0_bits);   // Exit active CPU
  case 16: break;                           // Vector 16:  ADC12IFG5
  case 18: break;                           // Vector 18:  ADC12IFG6
  case 20: break;                           // Vector 20:  ADC12IFG7
  case 22: break;                           // Vector 22:  ADC12IFG8
  case 24: break;                           // Vector 24:  ADC12IFG9
  case 26: break;                           // Vector 26:  ADC12IFG10
  case 28: break;                           // Vector 28:  ADC12IFG11
  case 30: break;                           // Vector 30:  ADC12IFG12
  case 32: break;                           // Vector 32:  ADC12IFG13
  case 34: break;                           // Vector 34:  ADC12IFG14
  default: break;
  }
}

相关帖子

沙发
meishizhaoshi| | 2011-12-19 12:19 | 只看该作者
CSSTARTADD是不是没有配置,你选择ADC12MEM寄存器是要配置的,不然会默认0的。如果发现AD进不了中断,可以在程序中加断点,然后检查ADC12IFG寄存器,看哪一位置位了,这样更容易查找原因!

使用特权

评论回复
板凳
szf622| | 2015-5-14 15:23 | 只看该作者
首先你的模拟通道选择的是A0,而不是P6.4其次,你的中断开的是ADC12IFG.4,而不是ADC12IFG.0,所以你肯定进不了中断啊!

使用特权

评论回复
地板
冰河w| | 2015-5-14 18:10 | 只看该作者
是不是引脚的输入输出方向没设置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

97

主题

1441

帖子

1

粉丝