c语言嵌入式基础问题(关于<<运算)
发布网友
发布时间:2022-05-10 06:13
我来回答
共4个回答
热心网友
时间:2023-11-10 19:57
2.
ADCH应该是个宏,最终对应一个整数,
8<<ADCH可理解为把8乘了ADCH次2,再加到value里。
用移位来做乘2或者除以2操作比直接乘除快很多。
哦,这么回事呀。那么我猜是这样:
UCSR0A中的第UDRE0位表示发送缓冲器UDR0是否就绪。
因为函数名叫putc(我理解是向UDR0对应的设备输出一个字符)
while(!UCSR0A&(1<<UDRE0)持续的检查UDR0是否已经就绪了。
若就绪,就把字符c传入UDR0中(就是写入设备)
热心网友
时间:2023-11-10 19:57
你给了这么多代码,不知道给你解释哪个
就按照你最初的问题解释吧
我没有做过AVR单片机,只是按照代码给你解释
(1)当UDRE0为0时 UCSR0A与上0x01
当UDRE0为1时 UCSR0A与上0x02,
(2)value=value+(0x08左移ADCH位的值)
比如ADCH为0时 (0x08左移ADCH位的值)是0x08
比如ADCH为1时 (0x08左移ADCH位的值)是0x10
比如ADCH为2时 (0x08左移ADCH位的值)是0x20
热心网友
时间:2023-11-10 19:58
<<是移位,比如1<<3的结果就是二进制的0100,也就是8
热心网友
时间:2023-11-10 19:58
UCSR0A&(1<<UDRE0)
这一句的意思是如果UCSR0A的第UDRE0位为1的话,整句的结果就为UDRE0