令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4
テクノロジ/コンピュータ構成要素8 ビットの方向レジスタ及びデータレジスタで構成される I/O ポートがあり,各ビットに LED が一つずつ負論理で接続されている。システム起動時に LED の不要な点灯を避けるための手続として,適切なものはどれか。ここで,レジスタに書き込む値は 16 進数で表現している。 方向レジスタ(ビット 7~0,MSB→LSB の順)のリセット時の値:0,0,0,0,0,0,0,0(0:入力,1:出力) データレジスタ(ビット 7~0,MSB→LSB の順)のリセット時の値:不定,不定,不定,不定,不定,不定,不定,不定(0:点灯,1:消灯) (注:本サイトでは原問題の表を文字表記に変換しています)
出典:令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前Ⅱ 問4
- アデータレジスタに 00 を書き込んでから,方向レジスタに FF を書き込む。
- イデータレジスタに FF を書き込んでから,方向レジスタに FF を書き込む。
- ウ方向レジスタに FF を書き込んでから,データレジスタに 00 を書き込む。
- エ方向レジスタに FF を書き込んでから,データレジスタに FF を書き込む。
正解:イ
解説
データレジスタは 0 で点灯,1 で消灯,方向レジスタは 1 で出力を意味します。リセット直後はデータレジスタの値が不定であるため,先に方向レジスタに FF(全ビット出力)を書き込んでしまうと,不定な値のままポートが出力状態になり,不定な内容によって LED が意図せず点灯するおそれがあります。そこで,まずデータレジスタに FF(全ビット消灯を指示する値)を書き込んで出力データを確定させ,その後で方向レジスタに FF を書き込んで出力状態に切り替えれば,出力が有効になった瞬間から常に「消灯」を指示する値が出力されるため,LED の不要な点灯を防げます。
選択肢ごとの解説
- ア誤り。データレジスタに 00 を書き込むと,全ビットが「点灯(0)」を指示する値になるため,方向レジスタを出力に切り替えた瞬間に LED が点灯してしまい,不要な点灯を防げません。
- イ正しい。データレジスタに FF(全ビット消灯)を書き込んで安全な出力値を確定させてから,方向レジスタに FF を書き込んで出力状態に切り替えることで,LED の不要な点灯を避けられます。
- ウ誤り。方向レジスタを先に FF にすると,その時点でデータレジスタはまだ不定な値のままポートに出力されてしまうため,一瞬でも LED が意図せず点灯するおそれがあります。
- エ誤り。方向レジスタを先に FF にした時点でデータレジスタは不定な値のまま出力されるため,後からデータレジスタに FF を書き込んでも,その間の不要な点灯を防ぐことはできません。