目次

ハードウエアテスト(その14)

 手元にデジタルコンパスがあります。



 このコンパスは、8方向を3ビットのデジタル値で出力します。



 10進数で表現すると、以下。


 3ビットのデジタル値をINの1から3で入力し
 10進数に変換するサブルーチンを作成します。

100 '
110 LET [0],0,IN(1),IN(2),IN(3)
120 FOR I=3 TO 1 STEP -1
130   LET [0],([0] << 1) | [I]
140 NEXT
150 RETURN

 10進数に対応する文字を表示する処理を
 サブルーチンの呼び出し側で定義します。

10 ' test compass
20 GOSUB 100
30 IF [0] = 0 ? "S"  : IF [0] = 1 ? "SW"
40 IF [0] = 2 ? "NE" : IF [0] = 3 ? "N"
50 IF [0] = 4 ? "SE" : IF [0] = 5 ? "W"
60 IF [0] = 6 ? "E"  : IF [0] = 7 ? "NW"
70 WAIT 60
80 GOTO 20
90 END

 サブルーチンとその呼び出し側を合体。

10 ' test compass
20 GOSUB 100
30 IF [0] = 0 ? "S"  : IF [0] = 1 ? "SW"
40 IF [0] = 2 ? "NE" : IF [0] = 3 ? "N"
50 IF [0] = 4 ? "SE" : IF [0] = 5 ? "W"
60 IF [0] = 6 ? "E"  : IF [0] = 7 ? "NW"
70 WAIT 60
80 GOTO 20
90 END
100 '
110 LET [0],0,IN(1),IN(2),IN(3)
120 FOR I=3 TO 1 STEP -1
130   LET [0],([0] << 1) | [I]
140 NEXT
150 RETURN

 ラベルを利用して、書き直すと、以下。

10 ' test compass
20 @LOOP
30 GSB @HND
40 IF [0] = 0 ? "S"  : IF [0] = 1 ? "SW"
50 IF [0] = 2 ? "NE" : IF [0] = 3 ? "N"
60 IF [0] = 4 ? "SE" : IF [0] = 5 ? "W"
70 IF [0] = 6 ? "E"  : IF [0] = 7 ? "NW"
80 WAIT 60
90 GOTO @LOOP
95 END
100 @HND
110 LET [0],0,IN(1),IN(2),IN(3)
120 FOR I=3 TO 1 STEP -1
130   LET [0],([0] << 1) | [I]
140 NEXT
150 RTN

 CMOSのICである4028を利用して、LEDの点灯で
 方向を提示することもできます。




目次

inserted by FC2 system