[求助] 求教msp430f5438ADC问题

水货老手   2011-7-21 15:45 楼主
#include "msp430x54x.h"

void main(void)
{
  WDTCTL = WDTPW+WDTHOLD;                   // Stop watchdog timer
  P6SEL |= 0x01;                            // Enable A/D channel A0
  ADC12CTL0 = ADC12ON+ADC12SHT0_2;          // Turn on ADC12, set sampling time
  ADC12CTL1 = ADC12SHP;                     // Use sampling timer
  ADC12MCTL0 = ADC12SREF_2;                 // Vr+ = VeREF+ (ext) and Vr-=AVss
  ADC12CTL0 |= ADC12ENC;                    // Enable conversions

  while (1)
  {
    ADC12CTL0 |= ADC12SC;                   // Start conversion-software trigger
    while (!(ADC12IFG & BIT0));
    __no_operation();                       // SET BREAKPOINT HERE
  }
}
//P5.0不用申明就可以,奇怪了
这是TI的示例程序,里面用了P5.0的外部输入参考电压,但是并没有让SEL给1!奇怪的是结果还真的是以
P5.0的输入电压为基准电压,求高手解释下。

回复评论 (5)

求帮忙!自己顶下
点赞  2011-7-22 11:24
求救,求救!有莫有人在。。。
点赞  2011-7-23 09:46

     这里是因为这句话ADC12MCTL0 = ADC12SREF_2; 这个寄存器已经设置P5.0,P5.1为Vr+ = VeREF+ (ext) 

Vr-=AVss      若在选择IO的功能,就有点多余了。在430中有许多这样的例子,连线时注意要用哪个IO口就可以了!
 

点赞  2011-8-7 19:12

回复 4楼 whgwuhan 的帖子

分析的透彻!
点赞  2011-8-8 00:46
给力
点赞  2011-8-8 08:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复