2

我正在考虑从我的 ADC 转换中获取 10 位数据并将其存储到 1 个 16 位整数数据中,看起来像 0x03 ADRESH 0xFF ADRESL。我现在正在做的是

    data = 0x03 & ADRESH;
    data = data << 8;
    data = data & 0x03FF & ADRESL;

这会按我的想法工作还是我错过了什么?谢谢您的帮助

4

2 回答 2

6

你为什么不使用|运营商?short data = ((0x03 & ADRESH) << 8) | ADRESL;应该可以正常工作。

于 2013-06-03T14:43:54.967 回答
1

您的代码将不起作用

data = data & 0x03FF & ADRESL;

应该更接近

data = data | ADRESL;
or 
data |= ADRESL;

您在 16-bit 中执行了 8 字节移位,这很好data

注意:& 0x03FF不需要。
注意:确保数据类型data至少为 16 位。
注意:如果您仍然遇到问题,请确保 10 位对齐与您的想法一致。许多 A/D 模块允许 10 位数据位于高 10 位而不是低位。

于 2013-06-03T14:55:34.273 回答