我正在学习课程。
示例代码段包含以下行:
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) );