8253は最大5MHzで動作する16ビット・プログラマブル・カウンタを3個内蔵し、6通りの動作モードをもつマイコン周辺LSIで、PIT(ProgrammableIntervalTimer)と呼ばれています。6通りの動作モードはモード0−5と呼ばれており、コントロール・ワードによって選択します。8253のカウンタ0,1,2は16ビット・ダウン・カウンタですが、データ・バスはD7からD0までの8ビット分しかありません。そこでカウンタの読み込み・書き込みは、下位8ビット・上位8ビットの順に2回に分けて行うことになります。なおPIF95回路図からもわかるように、8253は8255Aとパラレルに配置されており、規格化されたI/Oアドレスの指定で選択(チップセレクト)されます。 詳細については、「パソコン・インターフェイスの製作実習」(横山直隆 著 技術評論社)を参考にされたい。
PIF95はクロックとして2MHzを使用しているため、このままではLEDのON,OFFが速すぎて目での確認が不可能です。そこで
(ア)2MHzを2段階で分周し、目で確認できる速さにする。
(1)第1段階 カウンタ0を使用(2MHz−>40Hz)
(2)第2段階 カウンタ1を使用(40Hz−>1Hz)
(イ)カウンタ2を使って各モードをテストする。
のように決めます。(1),(2)の分周プログラムは次の通りです。
10 OUT &H27,&H38: ’カウンタ0をモード3に設定
20 OUT &H24,&H28: OUT &H24,&H0: ’カウンタ0に C350H(50000)
をセット(40Hzに)
これでカウンタ0のOUT0からは40Hzのクロックが出力され、カウンタ1のCLK1に入力されます。
30 OUT &H27,&H76: ’カウンタ1をモード3に設定
40 OUT &H25,&H28: OUT &H25,&H0: ’カウンタ1に 28H(40)
をセット(1Hzに)
これでカウンタ1のOUT1からは1Hzのクロックが出力され、カウンタ2のCLK2に入力されます。
カウンタ2に入力される1Hzのクロックを使って、モード0を確かめるプログラムを作って見ましょう。
50 OUT &H27,&HB0: ’カウンタ2をモード0に設定
60 INPUT "カウント N=";N
70 OUT &H26,N: OUT &H26,0: ’カウンタ2にカウントNを設定
80 END
8253テストボードのGATE0,1,2の各スイッチを”H”にしたのち、上記のプログラムを実行します。このときOUT0,1,2のLEDが次のように動作するか確かめてみましょう.
(1)LED0(OUT0)は40HzでON,OFFしているか.
(2)LED1(OUT1)は1HzでON,OFFしているか.
(3)LED2(OUT2)は最初OFFで、LED1がN回OFFしたのちONするか.
(4)カウンタNの値を変えるとLEDもへんかするか.
上記のプログラムの50行,60行を変えることによって各モードをテストすることができます。
GATE1を”H”にした時間を測定するプログラムを作ってみましょう。
10 CLS
20 PRINT "GATE1ヲ H ニシタジカンノソクテイ"
30 LOCATE 0,3: PRINT "SPACEキー デ リセット"
40 OUT &H27,&H36
50 OUT &H24,&HD0: OUT &H24,&H7
60 OUT &H27,&H70
70 OUT &H25,&HFF: &H25,&HFF
80 OUT &H27,&H40
90 D=INP(&H25)+256*INP(&H25)
100 T=(65535-D)/1000
110 LOCATE 0,1: PRINT USING "###.###";T
120 LOCATE 8,1: PRINT "s"
130 IF INKEY$=" " THEN 50
140 GOTO 80
8253テストボード回路図(22KB)へ
EHC事務局のページへ