目次

エンコーダ

 デジタル回路は、シーケンサ、デコーダ、エンコーダで
 構成することが多いので、エンコーダをテストすることも
 必要になります。

 8入力3出力のエンコーダがあるとして、8ビット出力を
 考えます。

 OUT命令で出力できるビット数は、最大4ビットなので
 シフトレジスタを用意し、2ビットで8ビットを賄う
 としましょう。



 シフトレジスタに、74HC164を利用したなら、8ビット値を
 出力するサブルーチンを考えます。

100 '
110 FOR I=1 TO 8
120   OUT 1,P & 1:OUT 2,1:OUT 2,0
130   LET P,P >> 1
140 NEXT
150 RTN

 3ビット値の入力と表示をサブルーチンでまとめます。

200 '
210 FOR I=1 TO 3:LET [I],IN(I):NEXT
220 ? [1],[2],[3]
230 RTN

 8ビット値を設定して、エンコーダに与えます。
 エンコーダ値による出力を表示させてみます。

10 ' test endoer
20 FOR P=0 TO 255
30   ? P
40   GOSUB 100
50   GOSUB 200
60 NEXT
70 END
100 '
110 FOR I=1 TO 8
120   OUT 1,P & 1:OUT 2,1:OUT 2,0
130   LET P,P >> 1
140 NEXT
150 RTN
200 '
210 FOR I=1 TO 3:LET [I],IN(I):NEXT
220 ? [1],[2],[3]
230 RTN

 16ビット値では、シフトレジスタを次のように
 接続します。



 16ビット値を設定して、エンコーダに与えます。
 エンコーダ出力が4ビットだったとしたときは
 次のようにプログラムを変更します。

10 ' test endoer
20 FOR P=0 TO 65535
30   ? P
40   GOSUB 100
50   GOSUB 200
60 NEXT
70 END
100 '
110 FOR I=1 TO 16
120   OUT 1,P & 1:OUT 2,1:OUT 2,0
130   LET P,P >> 1
140 NEXT
150 RTN
200 '
210 FOR I=1 TO 4:LET [I],IN(I):NEXT
220 ? [1],[2],[3],[4]
230 RTN

 エンコーダに与える値が3ビットだったり
 10ビットだった場合は、20行、110行のFOR
 に与える最大値を変えて対応します。

 ラベル利用で、次のように書き換えられます。

10 ' test endoer
20 FOR P=0 TO 65535
30   ? P
40   GSB @PON
50   GSB @POFF
60 NEXT
70 END
100 @PON
110 FOR I=1 TO 16
120   OUT 1,P & 1:OUT 2,1:OUT 2,0
130   LET P,P >> 1
140 NEXT
150 RTN
200 @POFF
210 FOR I=1 TO 4:LET [I],IN(I):NEXT
220 ? [1],[2],[3],[4]
230 RTN


目次

inserted by FC2 system