目次
前
次
ハードウエアテスト(その14)
手元にデジタルコンパスがあります。
このコンパスは、8方向を3ビットのデジタル値で出力します。
10進数で表現すると、以下。
- 0 S(South)
- 1 SW(South West)
- 2 NE(North East)
- 3 N(North)
- 4 SE(South East)
- 5 W(West)
- 6 E(East)
- 7 NW(North West)
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の点灯で
方向を提示することもできます。
目次
前
次