目次
前
次
エンコーダ
デジタル回路は、シーケンサ、デコーダ、エンコーダで
構成することが多いので、エンコーダをテストすることも
必要になります。
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
目次
前
次