首先是一个adc10的模块程序如下,不懂之处已标红,望有人给我解释解释,尤其是那个控制器1左移12是有什么意义,非常不解,谢谢了!
/*
* ADC10Conversion(unsigned char):
* 功能: adc10启动并根据传入采样通道完成一次采样
* 输入: 要采样的adc10的通道
* 输出: 一次完成的采样值
**/
unsigned int ADC10Conversion(unsigned char inch)
{
//if(inch > 7) /* ADC10 channel #0~7*/
//return 0;
if(inch > 7 && inch < 15)
return 0;
ADC10CTL0 &= ~ADC10SC;
ADC10CTL0 &= ~ENC;
ADC10CTL1 = ((unsigned int)inch << 12) + ADC10SSEL_3; //input channel + clock source select SMCLK
ADC10AE0 = BIT0 << inch; //Analog input enabled
ADC10CTL0 |= ENC + ADC10SC; //adc10 enabled + start sample and conversion
ADC10CTL0 |= ADC10SC;
while(ADC10CTL1 & ADC10BUSY);
return ADC10MEM;
}
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
昨天看错了,是INCHx左移,那么您说的应该没错,应该是12~19啊。。。想不通
这个是这样的,这样没问题,我昨天想错了,你可以举个例子对照一下,我昨天说错了。程序没错
其实遇到这些情况的话,这些其实都是C语言,单步调试看每一步的结果就能知道他们是干什么的。多调试,多试验,有时候想的不一定对,调试出来行的才可靠。
一周热门 更多>