手動 PPI 8255の実験回路(モード 0のみ)

回路図
コントロールワード設定
動作条件設定

手動でPPI 8255を操作してみました。
CPUの代わりに人間が操作する事によって、プログラムから制御をするより、信号受け渡しを体感でき、より深く理解する事が出来ます。

8255は、インテルによって8080用に開発された、汎用プログラマブルインターフェイスで、8ビットで最も普及している並列入出力インターフェイスです。
実験にはセカンドソースの三菱M5L8255AP−5を使用しています。
8255には、3つのモードがありますが、この実験回路で確かめる事が出来るのは、モード 0の基本入出力動作モードのみです。


CWRへの機能設定と書き込み

8255には、データ幅8ビットのポートがA、Bの2本、データ幅4ビットのポートが、C(上位4ビット、下位4ビット)の2本、計4本のポートを持っています。
各ポートをどのように使うかは、はじめに機能設定をCWR(コントロールワードレジスタ)に書き込んで決めます。

まず、各モード・入出力の設定は、コントロールワード設定の表で、各機能と対応するCWR(コントロールワードレジスタ)のビットを確かめながら、データバス・スイッチで設定していきます。
モードをセットしますので、モードセットフラグD7は1に、この実験回路はモード 0のみですので、D6、D5、D2を0にします。











各ポートの入出力は、入力に使いたければ1、出力に使いたければ0を設定します。


データの入出力は、CPUとメモリーの関係と似ています。

データバスから各PORTへデータを出すのを出力。
データバスへ各PORTからデータが入るのを入力。
メモリー  PPI
 8255
WRITE WRITE
(出力)
 CPU  メモリー  CPU    →   8255   →
各ポート
 A・B・C 
 ←
外部
機器
データ
バス
D0〜D7
データ
バス
D0〜D7
  ←
READ READ
(入力)

また、1と0どちらが入力か出力かわからなくなったときは、
「1」は「I」と似ているからINPUT(入力)、
「0」は「O」と似ているからOUTPUT(出力)
と考えると覚えやすいです。

設定が終わったら設定した内容をCWR(コントロールワードレジスタ)への書きこみます。
A1 A0 _RD _WR _CS
1 1 1 0↑ 0

動作条件設定
の表の一番下、「CWR(コントロールワードレジスタ)への書きこみ」と同じように、A1、A0、_RDを1に、そして、_WRを0の状態のまま、タクトスイッチWR↑を1度押すと、CWR(コントロールワードレジスタ)に書き込まれます。
(_CSはGNDに落としてありませので0になっています。)




例:全ポート入力

   8255   
各ポート
 A・B・C 
 ←
データ
バス
D0〜D7
  ←
READ
(入力)

CWR(コントロールワードレジスタ)をコントロールワード設定の表で確かめながら、
下の表のように設定します。










間違いが無ければ設定を書きこみます。
A1 A0 _RD _WR _CS
1 1 1 0↑ 0


入力は、バッファ回路ですので、下の表のように設定すると、
各ポートの信号がデータバスに筒抜けになります。

A1 A0 _RD _WR _CS
データバス←ポートA 0 0 0 1 0
データバス←ポートB 0 1 0 1 0
データバス←ポートC 1 0 0 1 0



例:全ポート出力

WRITE
(出力)
  →   8255   →
各ポート
 A・B・C 
 
データ
バス
D0〜D7
  

CWR(コントロールワードレジスタ)をコントロールワード設定の表で確かめながら、
下の表のように設定します。











間違いが無ければ設定を書きこみます。
A1 A0 _RD _WR _CS
1 1 1 0↑ 0



出力は、ラッチ回路ですので、下の表のように設定し、
タクトスイッチ_WR↑で信号がポートから出力されます。
(次の入力があるまで状態保持)

A1 A0 _RD _WR _CS
データバス→ポートA 0 0 1 0↑ 0
データバス→ポートB 0 1 1 0↑ 0
データバス→ポートC 1 0 1 0↑ 0