マイクロコントローラから 2 つのレジスタを読み取っています。1 つは 4 ビットの MSB (最初の 4 ビットには他のものがあります) と別の 8 ビットの LSB があります。それを1つの12ビット単位(正確には16ビット)に変換したい。これまでのところ、私はそのようにしました:
UINT16 x;
UINT8 RegValue = 0;
UINT8 RegValue1 = 0;
ReadRegister(Register01, &RegValue1);
ReadRegister(Register02, &RegValue2);
x = RegValue1 & 0x000F;
x = x << 8;
x = x | RegValue2 & 0x00FF;
それを行うより良い方法はありますか?
/ *より正確には、ReadRegister は別の ADC への I2C 通信です。Register01 と Register02 は異なるアドレスです。RegValue1 は 8 ビットですが、4 つの LSB だけが必要で、RegValue に連結されます (RegValue1 の 4-LSB と RegValue のすべての 8 ビット)。*/