目次

シフトレジスタチェック1

 8ビットの情報が必要になったとき、次の回路を考えました。



 4ビットを2回出力して、8ビットとします。

 動作テストするには、OUT_5、OUT_6をレジスタのトリガーに
 使い、情報は上位4ビット、下位4ビットにわけての出力に
 すればよいでしょう。

 サブルーチンで処理する方式でまとめると、呼び出し側から
 8ビットデータを貰い、4ビットに分割してOUT_1からOUT_4
 に出力。

 4ビットを出力後、OUT_5、OUT_6でトリガーパルスを与える
 と考えました。

100 '
110 LET [0],P:OUT 5,0:OUT 6,0
120 FOR I=8 TO 1 STEP -1
130   LET [I],[0] & 1
140   LET [0],[0] >> 1
150 NEXT
160 ' upper -> lower
170 FOR I=1 TO 4:OUT I,[I+4]:NEXT:OUT 5,1:OUT 5,0
180 FOR I=1 TO 4:OUT I,[I]:NEXT:OUT 6,1:OUT 6,0
190 RTN

 サブルーチンを使う側では、変数Pに値を代入して
 出力は任せるとします。

10 '
20 LET [10],#81,#42,#24,#18,#24,#42
30 FOR I=10 TO 15
40   LET P,[I]:GOSUB 100:WAIT 60
60 NEXT
60 IF BTN() GOTO 80
70 GOTO 30
80 ? "exit"
90 END

 上のサブルーチンは、8個のLEDを点灯して
 次のパターンとなるようにしました。



 プログラムを合体すると、以下。

10 '
20 LET [10],#81,#42,#24,#18,#24,#42
30 FOR I=10 TO 15
40   LET P,[I]:GOSUB 100:WAIT 60
60 NEXT
60 IF BTN() GOTO 80
70 GOTO 30
80 ? "exit"
90 END
100 '
110 LET [0],P:OUT 5,0:OUT 6,0
120 FOR I=8 TO 1 STEP -1
130   LET [I],[0] & 1
140   LET [0],[0] >> 1
150 NEXT
160 ' upper -> lower
170 FOR I=1 TO 4:OUT I,[I+4]:NEXT:OUT 5,1:OUT 5,0
180 FOR I=1 TO 4:OUT I,[I]:NEXT:OUT 6,1:OUT 6,0
190 RTN

 LEDの表示は、次の基板で調べました。



 20行の配列に設定する値を変更すると、いろいろ
 な表示パターンを実現できます。

 この回路を利用して、時間差で表示パターンを変更する
 POV(Persistent Of Vision=残像)を実現できます。

 4ビットのレジスタがないとき、カウンタICで代用させる
 ことが可能なので、次の回路でも同じことができます。




 上の回路では、4ビットのレジスタにデータを格納する
 には、nLDピンに負のパルスを印加します。

 4ビットレジスタにデータを格納するためのコードは以下。

10 '
20 LET [10],#81,#42,#24,#18,#24,#42
30 FOR I=10 TO 15
40   LET P,[I]:GOSUB 100:WAIT 60
60 NEXT
60 IF BTN() GOTO 80
70 GOTO 30
80 ? "exit"
90 END
100 '
110 LET [0],P:OUT 5,1:OUT 6,0
120 FOR I=8 TO 1 STEP -1
130   LET [I],[0] & 1
140   LET [0],[0] >> 1
150 NEXT
160 ' upper -> lower
170 FOR I=1 TO 4:OUT I,[I+4]:NEXT:OUT 5,0:OUT 5,1
180 FOR I=1 TO 4:OUT I,[I]:NEXT:OUT 6,1:OUT 6,0
190 RTN

 サブルーチン内部の110行、170行を負パルス制御に
 変更するだけです。

 ラベル利用で、次のようにも書けます。

10 '
20 LET [10],#81,#42,#24,#18,#24,#42
30 @LOOP
35 FOR I=10 TO 15
40   LET P,[I]:GSB @HND:WAIT 60
60 NEXT
60 IF BTN() GOTO @EXIT
70 GOTO @LOOP
80 @EXIT
90 ? "exit"
95 END
100 @HND
110 LET [0],P:OUT 5,1:OUT 6,0
120 FOR I=8 TO 1 STEP -1
130   LET [I],[0] & 1
140   LET [0],[0] >> 1
150 NEXT
160 ' upper -> lower
170 FOR I=1 TO 4:OUT I,[I+4]:NEXT:OUT 5,0:OUT 5,1
180 FOR I=1 TO 4:OUT I,[I]:NEXT:OUT 6,1:OUT 6,0
190 RTN


目次

inserted by FC2 system