ADC12转换模式:
1、单通道单次转换。
单通道多次转换指对选定的通道进行多次转换,直到关闭该功能或ENC=0需要进行如下设置。
①x=CSTARTADDx,指向转换通道。
②ADC12MEMx存放转换结果。
③ADC12MCTLx寄存器中定义了通道和参考电压。
此模式下,当改变转换模式时,不必先停止转换,在当前转换结束后,可改变转换模式。n该模式的停止可以采用以下方法。
①使CONSEQ=0,改变为单通道单次转换。
②使ENC=0,直接使当前转换完成后停止。
③使用单通道单模式替换当前模式,同时使ENC=0。
2、序列通道单次转换。
对序列通道进行单次转换要进行如下设置。
①X=CSTARTADDx,指示转换开始通道。
②EOS(ADCI2MCTLx.7=1)标志转换通道序列中最后通道,非最后通道的EOS位为0,表示序列转换没有结束。
③ADC12MEMx,....ADC12MEM.y存放转换结果。
④ADC12IFGx,....ADC12IFG,y为对应的中断标志。
⑤ADC12MCTLx寄存器中定义了通道和参考电压。
当有其他任何触发源用于开始转换时,在每次转换之间ENC必须固定。其他的采样输入信号将在ENC复位并置位前被忽略
序列通道单次转换的状态图
3、单通道多次转换。
单通道多次转换指对选定的通道进行多次转换,直到关闭该功能或ENC=0.需要进行如下设置
①x=CSTARTADDx,指向转换通道。
②ADC12MEMx存放转换结果。
③ADC12MCTLx寄存器中定义了通道和参考电压。
此模式下,当改变转换模式时,不必先停止转换,在当前转换结束后,可改变转换模式。该模式的停止可以采用以下方法。
①使CONSEQ=0,改变为单通道单次转换。
②使ENC=0,直接使当前转换完成后停止。
③使用单通道单模式替换当前模式,同时使ENC=0。
单通道多次转化状态图
4、序列通道多次转换。
序列通道多次转换指对序列通道进行多次转换,直到关闭该功能或ENC-0。其需要进行如下设置。
①x=CSTARTADDx,指示转换开始地址。
②EOS(ADC12MCTLx.7=1)标志转换通道序列中的最后通道y。
③ADC12MCTLx寄存器中定义了通道和参考电压。
改变转换模式,不必先停止转换。一旦改变模式
序列通道多次转换的状态图
单通道单词转换代码。选用AVcc为参考电压。检测P6.0引脚电压,如果引脚电压大于0.5×AVcc,则点亮P1.0口的LED,否则LED灭。
#include<msp430f169>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭WDT
ADC12CTL0 = SHT0_2 + ADC12ON; //设定采样时间,打开ADC12,n=4
ADC12CTL1 = SHP; //单通道单次转换,使用采样定时器,选择同相输入
//ADC12SC,ADC12内部时钟源
ADC12IE = 0x01; //使能转换中断
ADC12CTL0 |= ENC; //使能转换器
P6SEL |= 0x01; //选取p6.0为A/D通道AD0
P1DIR |= 0x01; //p1.0输出
while(1)
{
ADC12CTL0 |= ADC12SC; //开启采样
}
}
#pragma vector=ADC_VETOR
_interrupt void ADC12_deal (void)
{
if (ADC12MEM0 <0x7FF)
P1OUT &= ~0x01; //清p1.0 LED,灭
else
P1OUT |= 0x01; //置p1.0 LED,亮
}
参考ccs官网msp430f169的使用手册和《16位单片机原理及应用:基于msp430》