汎用入出力ポートで LED を点灯する
出典: 令和3年度 秋期 応用情報技術者試験 午前 問23 (IPA)
マイコンの汎用入出力ポートに接続された LED1 を,LED2 の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として,適切なものはどれか。ここで,使用されている汎用入出力ポートのビットは全て出力モードに設定されていて,出力値の読出しが可能で,この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。

- ア 汎用入出力ポートから読み出した値と 16 進数の 08 との論理積
- イ 汎用入出力ポートから読み出した値と 16 進数の 08 との論理和
- ウ 汎用入出力ポートから読み出した値と 16 進数の 48 との論理積
- エ 汎用入出力ポートから読み出した値と 16 進数の 48 との論理和
正解と解説を見る
正解: イ
- ア: 08 との論理積では、ビット 3 以外が全て 0 になるので、LED2 が点いていた場合に消えてしまいます。
- イ: 08 との論理和なら、ビット 3 だけを 1 にして他のビットは変えないので、LED2 の状態を変えずに LED1 を点灯できます。正しい答えです。
- ウ: 48 (0100 1000) との論理積では、ビット 3 とビット 6 以外が 0 になり、LED1 も元が消えていれば点きません。
- エ: 48 との論理和では、ビット 6 も 1 になるので、LED2 も点灯してしまいます。
ポイント
- LED1 はビット 3 につながっています。ビット 3 だけが 1 の値は 2 進数 0000 1000 = 16 進数の 08 です。
- 読み出した値と 08 の 論理和 (OR) を取ると、ビット 3 だけが必ず 1 になり、他のビット (LED2 のビット 6 など) は元のまま残ります。
- 論理積 (AND) を取ると、ビット 3 以外が 0 になり、LED2 が消えてしまいます。