我确信这已经被问到了,但是我很难理解如何位屏蔽一个8位寄存器。
假设我有一个8位寄存器。通过PORTD
设置位。我想更改除2 LSB以外的所有位。
PORTD |= 0b111011XX;
XX是我不想改变的2个LSB。
我该怎么做?
最佳答案
如果您想保持清晰的意图,您可以将遮罩部分与设置的值分开,例如:
PORTD |= 0b11101100 & ~0b00000011
这将在任何情况下得到优化,但将清楚地解释你的设置和你想保持的现状。
关于c - 位屏蔽位寄存器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26193153/