我正在学习课程AVR uCs
。
示例代码段包含以下行:
DDRC |= (0 << 0) | (0 << 1); // PIN C0, C1 as input for buttons
我不明白是什么意思
(0 << 0)
使这条线在逻辑上做什么。
我知道DDRC
是什么我只想理解这种逻辑操作。
可能是评论有帮助。
答案 0 :(得分:0)
代码什么都不做,可能是错的。
作者可能意味着
DDRC |= (1 << 0) | (1 << 1);
是
的缩写DDRC |= 3;
读取DDRC,设置最底部的两位,并将该值写回。使用<<
和|
的语法会尝试使其更清晰。
另一种解释是作者打算清除这两位。在这种情况下,代码是错误的,因为它没有这样做。
如果DDRC
是端口C的数据方向寄存器,则写入零位可能会将方向切换为输入,在这种情况下,意图似乎是清除位。
适当的代码是
DDRC &= ~( (1 << 0) | (1 << 1) );