我正在考虑从我的 ADC 转换中获取 10 位数据并将其存储到 1 个 16 位整数数据中,看起来像 0x03 ADRESH 0xFF ADRESL。我现在正在做的是
data = 0x03 & ADRESH;
data = data << 8;
data = data & 0x03FF & ADRESL;
这会按我的想法工作还是我错过了什么?谢谢您的帮助
你为什么不使用|
运营商?short data = ((0x03 & ADRESH) << 8) | ADRESL;
应该可以正常工作。
您的代码将不起作用
data = data & 0x03FF & ADRESL;
应该更接近
data = data | ADRESL;
or
data |= ADRESL;
您在 16-bit 中执行了 8 字节移位,这很好data
。
注意:& 0x03FF
不需要。
注意:确保数据类型data
至少为 16 位。
注意:如果您仍然遇到问题,请确保 10 位对齐与您的想法一致。许多 A/D 模块允许 10 位数据位于高 10 位而不是低位。