令和3年度 秋期 応用情報技術者試験 午前 問題 問23

マイコンの汎用入出力ポートに接続されたLED1を,LED2の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として,適切なものはどれか。ここで,使用されている汎用入出力ポートのビットは全て出力モードに設定されていて,出力値の読出しが可能で,この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。

マイコンの汎用入出力ポートとLEDの接続を示す回路図
図の説明テキスト

マイコンの汎用入出力ポートとLEDの接続を示す回路図。
左側に「汎用入出力ポート」の枠があり、上から「(MSB) ビット7」「ビット6」「…」「ビット3」「…」「(LSB) ビット0」と端子が並んでいる。
ビット6の端子から右へ線が伸び、直列に「電流制限抵抗」と「LED 2」(発光ダイオードの図記号)を経て接地(グラウンド)されている。
ビット3の端子から右へ線が伸び、直列に「電流制限抵抗」と「LED 1」(発光ダイオードの図記号)を経て接地(グラウンド)されている。

解答・解説

正解: イ. 汎用入出力ポートから読み出した値と16進数の08との論理和

回路図より、マイコンの汎用入出力ポートと各LEDの接続は以下のようになっています。

  • LED1 は ビット3 に接続されています。
  • LED2 は ビット6 に接続されています。

LED1を点灯させるには、汎用入出力ポートのビット3を 11 にする必要があります。
さらに「LED2の状態を変化させずに」という条件を満たすためには、ビット3以外の状態(ビット6など)を元の値のまま維持しなければなりません。

特定のビットのみを 11 に設定し、他のビットの状態を維持するには、対象となるビットのみを 11 、それ以外を 00 とした値との論理和(OR)をとります。

ビット3のみを 11 とした値は、2進数で表すと 0000100000001000 となります。
これを16進数で表現すると 0808 となります。

したがって、汎用入出力ポートから読み出した値と16進数の 0808 との論理和を書き込むのが適切です。

各選択肢の解説

  • ア:16進数の 0808 (2進数 0000100000001000)との論理積(AND)をとると、ビット3以外のすべてのビットが 00 になってしまい、LED2を含む他の状態を変化させてしまうため誤りです。
  • イ:正解です。ビット3のみを確実に 11 にし、他のビットの状態を維持できます。
  • ウ:16進数の 4848 は2進数で 0100100001001000 (ビット6とビット3が 11 )です。これとの論理積(AND)をとると、ビット6とビット3以外の状態がすべて 00 に変化してしまうため誤りです。
  • エ:16進数の 4848 (2進数 0100100001001000)との論理和(OR)をとると、ビット3だけでなく、LED2が接続されているビット6も強制的に 11 に(点灯状態に)なってしまい、LED2の状態を変化させてしまうため誤りです。

Spineチーム