为什么我的ADC12MEM0寄存器读出来最大值是255

2019-03-24 12:12发布

为什么我的ADC12MEM0寄存器读出来最大值是255
#include  <msp430x14x.h>
unsigned char i=0,qianwei=0,baiwei=0,shiwei=0,gewei=0;
#include "1602.c"
unsigned int a[32];
unsigned int sum=0;
unsigned int temp=0;

void main()
{   
  /*下面六行程序关闭所有的IO口*/
  P1DIR = 0XFF;P1OUT = 0XFF;
  P2DIR = 0XFF;P2OUT = 0XFF;
  P3DIR = 0XFF;P3OUT = 0XFF;
  P4DIR = 0XFF;P4OUT = 0XFF;
  P5DIR = 0XFF;P5OUT = 0XFF;
  P6DIR = 0XFF;P6OUT = 0XFF;
  WDTCTL = WDTPW+WDTHOLD;          //关闭看门狗
  LCD_Int();
  P6SEL |= 0x01;                            // 使能ADC通道
  ADC12CTL0 = ADC12ON+SHT0_8+MSC;           // 打开ADC,设置采样时间
  ADC12CTL1 = SHP+CONSEQ_2;                 // 使用采样定时器
  ADC12IE = 0x01;                           // 使能ADC中断
  ADC12CTL0 |= ENC+ADC12SC;                         // 使能转换
  _EINT();
  LPM0;
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
  a=ADC12MEM0;
  i++;
  sum=sum+a;
  if(i==32)  
  {
  temp=sum/32;
    i=0;
    sum=0;
    LCD_address(0,0);
    LCD_shuju(temp);  //temp 液晶上显示是255 而不是2的12次方
  }

} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
qinkaiabc
2019-03-24 18:51
void initADC12(){
    P6SEL = 0x02;               //设置P6.0为模拟输入通道
    ADC12CTL0 &= ~(ENC);        //设置ENC为0,从而修改ADC12寄存器的值
    ADC12CTL0 |= ADC12ON + SHT0_8 + MSC; //打开ADC12内核
    ADC12CTL1 = SHP + CONSEQ_2+CSTARTADD_1;
    ADC12MCTL1 |= INCH_1;
    ADC12IE = 0x02;             //使能中断ADC12IFG.0
    ADC12CTL0 |= ENC;           //使能转换
   _EINT();
    ADC12CTL0 |= ADC12SC;       //开始转换
}



加上ADC12CTL0 &= ~(ENC);  不然设置无效 。
827002_ciooo_com.gif

一周热门 更多>

相关问题

    相关文章