C移零或移零

时间:2014-07-09 14:44:51

标签: c bit-shift

我正在学习课程AVR uCs

示例代码段包含以下行:

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

我不明白是什么意思

(0 << 0)

使这条线在逻辑上做什么。

我知道DDRC是什么我只想理解这种逻辑操作。

可能是评论有帮助。

1 个答案:

答案 0 :(得分:0)

代码什么都不做,可能是错的。

作者可能意味着

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

的缩写
DDRC |= 3;

读取DDRC,设置最底部的两位,并将该值写回。使用<<|的语法会尝试使其更清晰。

另一种解释是作者打算清除这两位。在这种情况下,代码是错误的,因为它没有这样做。

如果DDRC是端口C的数据方向寄存器,则写入零位可能会将方向切换为输入,在这种情况下,意图似乎是清除位。

适当的代码是

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