「組み込み」ならではの基礎知識 ――スタートアップ・ルーチンからハードウェアまで
●値を保持するラッチと出入りをしきるゲート
CPUには,アドレス・バス,データ・バスを共有する複数のデバイスをつなぐことができます.注意が必要なのは,データ・バスに有効なデータが載っているのは,リード信号やライト信号が有効な間だけであることです.したがって,ある番地のポートに書き込んだ値を保持したいときは,ラッチ(「掛けがね」とか,「つかまえる」といった意味)と呼ばれるデバイスを取り付けます.ラッチはあらかじめ決められた番地に書き込まれた値を保持してその出力の状態を保ちます.LEDなどをこのラッチの出力につなぐことで,点灯/消灯状態を保つことができます.
一方,スイッチの値を読み取るためには,ゲート(開閉器)を取り付けて,その番地に対してリード命令が実行されたときだけ,データ・バスに値を置くようにします.
では,このスイッチとLEDをCPUに接続してみましょう.まず,スイッチとLEDを割り当てる番地と,その働きを決めなければなりません.ここでは,表8-1のように割り当てることにします.この表を「メモリ・マップ」,もしくは「I/Oマップ」と呼びます.デバイスが割り当てられている番地と,その入出力の種別,値の意味が書かれています.この表では,0xFF00番地がスイッチ(ゲート),0xFF 01番地がLED(ラッチ)になっています.
番地
|
周辺装置
|
デバイス
|
入出力
|
注 釈
|
... | ... | ... | ... | ... |
0xFF00 | スイッチ | ゲート | 入力 | 0:押されている 1:押されていない |
0xFF01 | LED | ラッチ | 出力 | 0:点灯する 1:消灯する |
0xFF02 | 拡張用 | ? | ? | ... |
... | ... | ... | ... | ... |