为什么我的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次方
}
}
此帖出自小平头技术问答
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); 不然设置无效 。
一周热门 更多>