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


正解
解説
この問題は、マイコンの汎用入出力ポートに接続されたLEDを制御する際のビット操作について理解しているかを問うものです。LED1を点灯させつつ、LED2の状態を変化させないようにする必要があります。
- ビット操作と目的の整理
LED1はビット3、LED2はビット6に対応しています。LED1を点灯させるには、ビット3を1にする必要があります。LED2の状態を保つには、ビット6の値を変更せずそのままにする必要があります。 - 論理和(OR)によるビット設定
ポートの現状態から読み出した値と、ビット3のみが1で他が0であるビットマスク(16進数で08)との論理和(OR)をとると、ビット3は必ず1になり、他のビットは元の状態が保持されます。これはLED1を点灯させ、LED2の状態を変えずに済む最適な操作です。
したがって、汎用入出力ポートから読み出した値と16進数08との論理和を取ることで、LED1だけを点灯させ、LED2を含む他のビットの状態を維持することができます。