atmega32 中的 ADC 代码

发布于 2024-08-31 20:10:01 字数 353 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相思故 2024-09-07 20:10:01

0x00 & 0xFF 是无意义的,因为它的计算结果始终为 0。您可以将该行重写为 ADCMUX = adc_input;

您选择的通道将是存储在 adc_input 中的值

0x00 & 0xFF is nonsensical, as it will always evaluate to 0. You can rewrite that line as ADCMUX = adc_input;

Your channel selected will be the value stored in adc_input

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文