目次
前
次
シフトレジスタチェック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
目次
前
次