如何将2个8位寄存器数据存储到1个16位变量中?

时间:2013-06-03 14:40:37

标签: c embedded

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

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

这会让我觉得应该怎么做,或者我错过了什么?谢谢你的帮助

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

您的代码无效

data = data & 0x03FF & ADRESL;

应该更接近

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

在16位data中执行8字节移位很好。

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