Lesson
4.Ports
Appendix
|
Lesson 4REGISTERS AND PORTSレジスターとIOポートElenco Electronics社のコンピュータートレーニングボード MICRO-MASTER MM-8000 の Lesson 4 に関するメモです.ここでは,I/Oポートの取り扱いを学習する.(参照:MM-8000のマニュアルのLesson 4).IOポートとレジスターについて,学習します. 目次REGISTERS and PORTSはじめにMPUは,メモリーの他に外部周辺機器とのデータの入出力を行う.周辺機器には,キーボードやハードディスク,プリンターなどがある.これら外部機器との接続口をI/Oポートと言う.ただし,MPUのI/Oポートに直接周辺機器を接続することはなく,通常は周辺回路を通す.すなわち,MPU⇔周辺回路⇔外部機器となる.MPUと外部機器との間にある周辺回路は,データを受け渡すバッファーのような役割を担っている. MM-8000ではIntel 8155を周辺回路に用いて,MPU(Intel 8085)は外部機器と接続するようになっている.この周辺回路と外部機器との接続口もI/Oポートと言う.ここではこのI/0ポートとそれをコントロールするレジスターの取り扱いについて学習する.このキットでは,MPU使ってI/Oポートをコントロールする前に,人間がスイッチによりそれを制御し,8155の動作を理解する.前の Lesson の RAM と同じような経験をするのである. Intel 8155 には A(8bit)とB(8biy), C(6bit)の3つのポートがある.それらは,コマンド/ステータスレジスターの値により制御される.コマンドレジスターでポートの動作を指定し,RAMと同じようにアドレスデータバスからデータを読み込む.ステータスレジスターの値を読み込むと8155の状態を知ることができる. Intel 8155のブロックダイアグラムとピン番号は,次の図の通りである.詳細についてはデータシートをみることを勧める.
I/Oポート使い方8155はRAMとI/Oポートの機能がある.それらを同時に使うことはできない.IO/Mピンを High/Low にすることとで,それらの機能の選択を行う.I/Oポートを使う具体的な手順は次のようにする.
8155ではRAMの場合と同じように,レジスターと呼ばれる記憶領域を通してI/Oポートの向こう側にある機器とのデータの受け渡しを行う.MPUから見ると,周辺機器ではなくレジスターと呼ばれる記憶領域が見える.したがって,機器であってもほとんどRAMと同じように考えることができるので便利である.レジスターとのデータの受け渡し方法は,アドレスバスでレジスターを指定し,データバスでデータの受け渡しを行う. 8155には,I/Oポートに関係する4つのレジスターがある.そのほか,タイマーに関する2つのレジスターもあるが,それらについては「TIMER」のところで述べる.I/Oポートに関するレジスターのアドレスと役割は次の通り.アドレスの'x'は,0でも1でも良いことを示す.いわゆる"don't care"のこと.
これらのレジスターへの書き込み/読み込みの手順は,RAMの場合と全く同じようにする.
コマンド/ステータスレジスターコマンド/ステータスレジスター(command/status register)は,書き込みに時(WRがLow)にはコマンドを書き込み,読み込み時(RDがLow)にはステータスを読み込む.前者をコマンドレジスターと呼び,8155へ命令を与える.後者をステータスレジスターと呼び,8511の状態を示す. コマンドレジスターこの Lesson で学ぶ I/Oポートの設定は,コマンドレジスターより決める.コマンドレジスターに書き込む各ビットは次のようになっている.
ステータスレジスターステータスレジスターを読み込むと,8155の状態を知ることができる.ステータスレジスターが表す各ビットの内容は次のようになっている.
汎用ポートPAとPB,PCは汎用ポートで,RAMと同じように読み書きができる.これらのポートの入力/出力の設定は,コマンドレジスターで行う.読み/書きには「使い方」で述べたように,アドレスバスとデータバスを使う. 大事なことは,I/Oポートを通して外部機器とのデータの受け渡しを行う場合でも,アドレスバスとデータバスを使うことである.こうすることにより,MPU からは,RAMも外部機器も同じように見える.外部機器に依存して,コンピューターを設計する必要がなくなるので,コンピューターそのものが単純になる.その分,外部機器の方をコンピューターに合わせる. ASSEMBLY INSTRUCTIONS
とくに難しい半田付けはなく,マニュアルの通りにする.この課程で,A70というトランジスターが1個不足している—最初から入っていない—ことが分かった.その代わりに,A20というトランジスターが入っている.データシートによると,どちらも PNP型のシリコントランジスターで,特性も大きくは違わない.スイッチとして使っているだけなので,問題ないだろうと判断する. TEST PROCEDUREで動作不良が発生した.どうしても,DSP2の7セグが点灯しない.テスターで調べてみたところ,トランジスターQ1とQ2が怪しそうである.これらのトランジスターを交換することにする.2SA1015(PNP型シリコントランジスター)を大量に持っているので,それと交換.すると,TEST PROCEDUREの通り,問題なく動作した. CIRCUIT DESCRIPTION8155と2つの7セグとの接続は,下の図のようになっている.PORT B の出力が7セグのLEDに適当なドライバー回路を通してつながっている. 7セグの点灯/消灯は,PORT B の0/1で制御する.二つの7セグ(ISPLAY 1 と 2) はPORT C のビット0で選択できる.それを H(1)にすると,DISPLAY 1 が,反対に L(0)にすると DISPLAY 2 が点灯する.
TEST PROCEDURE出来上がった回路は,次のようにして動作を確認し,8155の内容を理解する.
READING AN OUTPUT PORTポートを出力に設定していても,データを読み出すこともできる.
ページ作成情報参考資料
更新履歴
|