atmega32 中的 ADC 代码
uint read_adc(uchar adc_input)
{
ADMUX=adc_input | (0x00 & 0xff);
delay_us(10);
ADCSRA|=0x40; //START THE CONVERSION
while ((ADCSRA & 0x10)==0); // wait for the conversion to complete
ADCSRA|=0x10; //clear the ADC flag
return ADCW;
}
问:“ADMUX=adc_input | (0x00 & 0xff)”是什么意思?我们在这里选择了哪个输入通道?
uint read_adc(uchar adc_input)
{
ADMUX=adc_input | (0x00 & 0xff);
delay_us(10);
ADCSRA|=0x40; //START THE CONVERSION
while ((ADCSRA & 0x10)==0); // wait for the conversion to complete
ADCSRA|=0x10; //clear the ADC flag
return ADCW;
}
Q: Whats the meaning of "ADMUX=adc_input | (0x00 & 0xff)" ? which input channel we have selected here ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
0x00 & 0xFF
是无意义的,因为它的计算结果始终为 0。您可以将该行重写为ADCMUX = adc_input;
您选择的通道将是存储在
adc_input
中的值0x00 & 0xFF
is nonsensical, as it will always evaluate to 0. You can rewrite that line asADCMUX = adc_input;
Your channel selected will be the value stored in
adc_input