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

問23

マイコンの汎用入出力ポートに接続されたLED1を, LED2の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として,適切なものはどれか。ここで,使用されている汎用入出力ポートのビットは全て出力モードに設定されていて,出力値の読出しが可能で,この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。
23.gif/image-size:354×230
  • 汎用入出力ポートから読み出した値と16進数の08との論理積
  • 汎用入出力ポートから読み出した値と16進数の08との論理和
  • 汎用入出力ポートから読み出した値と16進数の48との論理積
  • 汎用入出力ポートから読み出した値と16進数の48との論理和

分類

テクノロジ系 » ハードウェア » ハードウェア

正解

解説

16進数の 08 と 48 を2進数表記にすると以下のようになります。
  • 08(16) = 0000 1000(2)
  • 48(16) = 0100 1000(2)
LSB(最下位ビット)がビット0、MSB(最上位ビット)がビット7なので、設問の図のビット3(LED1)とビット6(LED2)とビットマスクの位置はそれぞれ以下のように対応します。
23_1.gif/image-size:444×142
LEDを点灯させるには対応するビットに"1"を出力します。LED2を変化させずに、LED1を点灯させるには、汎用入出力ポートから読み出した値のビット6はそのまま、ビット3を"1"にした値を書き込めば良いことになります。

ビット6について読み出したビットを変化させずにそのまま出力するには、"1"との論理積(AND)をとるか、"0"との論理和(OR)をとることになります。ビット3については必ず1を出力したいので"1"との論理和をとるのが必須です。この2つの条件を組み合わせると、ビット3は"1"で論理和をとる、論理和を使用するためビット6は"0"を使うことになります。

以上より、「読み出した値と16進数08の論理和」が適切とわかります。
  • ビット3は"1"との論理積、ビット6は"0"との論理積となります。LED1が点灯せず、点灯していたLED2が消灯してしまうため誤りです。
  • 正しい。ビット3は"1"との論理和、ビット6は"0"との論理和となります。ビット3は常に"1"で点灯、ビット6は読み出したビットがそのまま出力されます。
  • ビット3は"1"との論理積、ビット6も"1"との論理積となります。ビット3が"1"とならず、LED1を点灯させることができないため誤りです。
  • ビット3は"1"との論理和、ビット6も"1"との論理和となります。ビット6が常に"1"となり、消灯していたLED2が点灯してしまうため誤りです。
© 2010-2024 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop