|
我说的是ADC12MCTLx不是ADC12CTLx
ADC12MCTLx是转换存储器控制寄存器 它的定义如下:第7位是EOS表示序列结束
4~6位Sref参考电源选择 你要用内部的就是Sref_1
0~3位INCH选择输入通道 在这里定义你输入通道 通道0就是INCH_0
而不是用CSTARTADD_0
CSTARTADD_0只是定义起始通道
总结程序:
ADC12CTL0&=~ENC; //ENC=0 ,允许修改参数
ADC12CTL1=CSTARTADD_0+SHS_0+ADC12SSEL_2+CONSEQ_0; //单通道单次转换 ,ADC12MEM0
//选择MLCK为时钟源,not use sample timer
//S/H source: directly controlled by ADC12SC
ADC12CTL0|= SHT0_4+REF2_5V+REFON+ADC12ON;
ADC12MCTL0=10H;//信号由A0输入,内部参考电源
ADC12CTL0|=ENC; //ENC=1 ,不允许修改参数
delay(5000); //delay 30ms,fosc=1M ??????????????
ADC12_SUM=0;
for(i=0;i<16;i++) //采样Vp输出的电压16次,取平均值
{
ADC12CTL0|=ADC12SC; //ADC12SC=1
_NOP();
_NOP();
_NOP();
_NOP();
ADC12CTL0&=~ADC12SC; //ADC12SC=0,启动AD转换
_NOP();
while ((ADC12CTL1 & ADC12BUSY) == 1); //如果转换未结束,等待
_NOP();
ADC12_SUM+=ADC12MEM0; //把采样的AD值加到ADC12_SUM上
_NOP();
_NOP();
} //进行下一 |
|