令和3年度 秋期 エンベデッドシステムスペシャリスト試験 午前II 問4
テクノロジハードウェア
8ビットの方向レジスタ及びデータレジスタで構成されるI/Oポートがあり,各ビットにLEDが一つずつ負論理で接続されている。システム起動時にLEDの不要な点灯を避けるための手続として,適切なものはどれか。ここで,レジスタに書き込む値は16進数で表現している。

図の説明テキスト
方向レジスタ (MSBはビット7、LSBはビット0に対応)
| ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| リセット時の値 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 表の右下に「0: 入力, 1: 出力」という注記がある。 |

図の説明テキスト
データレジスタ (MSBはビット7、LSBはビット0に対応)
| ビット | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| リセット時の値 | 不定 | 不定 | 不定 | 不定 | 不定 | 不定 | 不定 | 不定 |
| 表の右下に「0: 点灯, 1: 消灯」という注記がある。 |
解答・解説
正解: イ. データレジスタにFFを書き込んでから,方向レジスタにFFを書き込む。
システム起動時にLEDの不要な点灯を避けるための手順は、各レジスタのリセット時の値と仕様から導くことができます。
- 方向レジスタとデータレジスタの初期状態
- 【図表: 方向レジスタの構成を示す表】より、方向レジスタのリセット時の値はすべてのビットが
0です。表の注記に示されている通り、0は 入力 を意味します。 - 【図表: データレジスタの構成を示す表】より、データレジスタのリセット時の値はすべてのビットが 不定 です。
- 【図表: 方向レジスタの構成を示す表】より、方向レジスタのリセット時の値はすべてのビットが
- LEDの消灯条件
- データレジスタの注記に示されている通り、LEDは
0で 点灯、1で 消灯 となります。 - したがって、すべてのLEDを消灯させるには、データレジスタのすべてのビットを
1、つまり16進数でFFにする必要があります。
- データレジスタの注記に示されている通り、LEDは
- 設定の順序
- もし先に方向レジスタに
FFを書き込んで 出力 状態にしてしまうと、その時点でデータレジスタの 不定 な値が出力されてしまいます。このとき、値が0になっているビットのLEDが意図せず点灯してしまいます。 - このような不要な点灯を避けるためには、まずデータレジスタに
FFを書き込んで消灯状態を確定させます。この時点では方向レジスタは 入力 状態のままであるため、LEDの状態には影響しません。その後に方向レジスタにFFを書き込んで 出力 状態にする必要があります。
- もし先に方向レジスタに
各選択肢の解説
- ア: データレジスタに
00を書き込むと、すべてのビットが0(点灯)の状態になります。その後に出力状態にすると、すべてのLEDが点灯してしまいます。 - イ: 正解です。まずデータレジスタに
FFを書き込んで消灯状態を確定させ、その後に方向レジスタにFFを書き込んで出力状態にするため、不要な点灯を避けられます。 - ウ: 先に方向レジスタに
FFを書き込んで出力状態にすると、データレジスタの不定な値がそのまま出力され、不要な点灯が発生する可能性があります。さらに、その後に00を書き込むとすべてのLEDが点灯してしまいます。 - エ: 先に方向レジスタに
FFを書き込んで出力状態にすると、データレジスタの不定な値がそのまま出力されるため、不要な点灯が発生する可能性があります。