我确信这已经被问到了,但是我很难理解如何位屏蔽一个8位寄存器。
假设我有一个8位寄存器。通过PORTD设置位。我想更改除2 LSB以外的所有位。

PORTD |= 0b111011XX;

XX是我不想改变的2个LSB。
我该怎么做?

最佳答案

如果您想保持清晰的意图,您可以将遮罩部分与设置的值分开,例如:

PORTD |= 0b11101100 & ~0b00000011

这将在任何情况下得到优化,但将清楚地解释你的设置和你想保持的现状。

关于c - 位屏蔽位寄存器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26193153/

10-11 22:56