我正在做一些 AVR 编程,并且有点掌握这整个位操作的事情,但仍然不太确定数据类型转换。
例如:
我有一个 16 位变量 ( myValue
),它对应 2 个端口上的 16 个 LED 的状态(例如,端口 A 上的 8 个 LED 和端口 D 上的 8 个 LED)。的 8 个高位myValue
在端口 D 上。
所以我的想法是基本上(0b0000000011111111 & myValue)
用来获取端口 A 和(0b1111111100000000 & myValue)
端口 D的值
那么问题是我可以做类似的事情uint8_t portA = (0b0000000011111111 & myValue)
吗?我相信我可以简单地设置
PORTA |= portA
因为端口 A 只有 8 个引脚(在我的情况下)。
问题出现在端口 D 中,因为另一方面,端口 D 无法使用无符号 8 位,因为它在&
操作后仍将保持为 16 位变量?然后如何设置一个 16 位变量的 8 针端口 D?