我正在学习课程。
示例代码段包含以下行:

DDRC |= (0 << 0) | (0 << 1); // PIN C0, C1 as input for buttons

我不明白什么意思
(0 << 0)

一般来说,这条线的逻辑功能。
我知道AVR uCs是什么,我只想了解这个逻辑操作。
可能是评论的帮助。

最佳答案

代码没有任何作用,可能是错误的。
作者的意思是

DDRC |= (1 << 0) | (1 << 1);

它是
DDRC |= 3;

它读取DDRC,设置最底部的两位,然后将该值写回。使用<<|的语法试图使这一点更清楚。
另一种解释是,作者打算清除这两个位。在这种情况下,代码是错误的,因为它不会这样做。
如果DDRC是端口C的数据方向寄存器,则可能是写入零位会将方向切换到输入,在这种情况下,目的似乎是清除位。
合适的代码是
DDRC &= ~( (1 << 0) | (1 << 1) );

10-04 16:21