問23
マイコンの汎用入出力ポートに接続されたLED1を、LED2の状態を変化させずに点灯したい。汎用入出力ポートに書き込む値として、適切なものはどれか。ここで、使用されている汎用入出力ポートのビットは全て出力モードに設定されていて、出力値の読出しが可能で、この操作の間に汎用入出力ポートに対する他の操作は行われないものとする。
ア 汎用入出力ポートから読み出した値と16進数の08との論理積
イ 汎用入出力ポートから読み出した値と16進数の08との論理和
ウ 汎用入出力ポートから読み出した値と16進数の48との論理積
エ 汎用入出力ポートから読み出した値と16進数の48との論理和
正解
イ
解説
MSB (Most Significant Bit) は、最上位ビット、LSB (Most Significant Bit) は、最下位ビットである。
また、ビット3が1であれば、LED1が点灯し、ビット3が0であれば、LED1が消灯する。ビット6についても同様である。
ア 16進数の08を2進数で表現すると 00001000であり、汎用入出力ポートから読み出した値との論理積は、ビット6は常に0となるため、LED2は消灯していれば状態の変化はないが、点灯していれば消灯してしまう。
イ 正しい。16進数の08を2進数で表現すると 00001000であり、汎用入出力ポートから読み出した値との論理和は、ビット6は0であれば0のまま、1であれば、1のままであるため、LED2の状態に変化はない。
一方、ビット3は常に1になるため、LED1は点灯する。
ウ 16進数の48を2進数で表現すると 01001000であり、汎用入出力ポートから読み出した値との論理積は、ビット6は1であれば1のまま、0であれば0のままとなるため、LED2の状態に変化はない。しかし、ビット3は0であれば0のままなので、LED1は点灯しない。
エ 16進数の48を2進数で表現すると 01001000であり、汎用入出力ポートから読み出した値との論理和は、ビット6は常に1になるため、LED2は点灯していれば状態の変化はないが、消灯していれば点灯してしまう。