16bitを上位8bit,下位8bitに分ける,2つの8bitを16bitに結合する
題名のまんまですが、16bitを上位8bit、下位8bitに分ける方法と、逆に、2つの8bitを16bitに結合する方法についてのメモです(^^) 用途 シリアル通信(UART)の送受信単位は1文字=1byte(8bit)なので、マイコンで16bitで定義した値を上位8bit、下位8bitに分けて送信したい。(PC側で16bitに結合して表示) 1byte(8bit)で受信したデータをマイコンで16bitに結合して、値を得たい。 16bitを上位8bit、下位8bitにわける やっていることは以下です。 上位8bitを抽出 : 右に8bitシフト(下位8bitにシフト) 下位8bitを抽出 : 0x00FFと”&”(アンド)をとる // 2byte(16bit)を上位8bit,下位8bitにわける unsigned short a,bH,bL // 2byte(16bit)で宣言 // bH : aの上位8bitを入れる // bL : aの下位8bitを入れる a = 0x4F1A; // 適当な値(2byte) // aの上位8bitをbHに入れる bH = a >> 8; // 右に8bitシフト(下位8bitにシフト) // bH = 0x004F // aの下位8bitをbLにいれる bL = a & 0x00FF; // 0x00FFと&をとる // bL = 0x001A 上位8bitの抽出 a = 0x4F1Aのように、適当な値を16進数で定義しました。 2進数で表現すると、a = 0b 0100 1111 0001 1010 (0bは2進数の意味)...