Arduino 用引脚计算

Arduino calculating with pins

我刚刚搜索了 LCD 的图书馆。当我找到一个时,我试图了解它是如何工作的。 然后我看到

PORTD &= ~(0xF0>>(4-PD0));

我从未见过这个 (4-PD0),也不知道那会是什么 return。 我想知道它是如何工作的,它 return 是什么,它有什么用。

所以感谢所有帮助的人:D.

PD0可能包含端口的位号,而不是直接掩码。例如“bit0”、“bit1”、“bit2”……等等,最高可达“3”。

旁边描述的掩码涵盖了除这四个前位之外的所有内容,因此需要从该数字的补码移位到给定位,因此 « 4 - PD0 »,它对 bit0 执行四次移位,三个移动位 1,依此类推。由于移位操作保留了符号,所以左边的所有位都保持不变。

在最后的“~”补码运算之后,您将获得一个将所有位设置为 1 的掩码,直到 PD0 位置,排除。这个掩码应该定位 PORTD。