質問: コードの意味を教えてください -------------- マイコンでA/D変換した値をUSART通信で送るときのコートです。 マイコンのA/D変換は、10bitのデータ。 次のコードをUSARTで送信すると、PC側は、0~1023までの値を表示します。(確認済) 1は、10bitのデジタルデータを8bitシフトしている(下位2ビットを削除) 2は、1のデータと0x00FFとのANDをとっているので、8bitのデータに変換 と理解していますが、 2があってもなくても、同じことではないかという疑問があります。 確認できるシステムがあればよいのですが、今はコードだけで学習しているため、1、2の両方を行っている意味が分かりません。 ``` 1Send(ADread >> 8); delay_ms(50); 2Send(ADread & 0x00FF); delay_ms(50); ```
回答: 最初のSendで、10ビットデータの上位2ビット分を送信しています そして、次のSendでは、10ビットデータの下位8ビットを送信してます シリアル通信では、1バイト(8ビット)単位の通信となるため、10ビット送ろうとすると2回の送信が必要となります