2009年07月05日

レーザー光線プログラム:解説

 先の記事で書いた「レーザー光線」のプログラムの解説。
 プログラムはこちらLink

 2進数LEDを点灯する方法として、下図のようにアドレス50に現在の数値、51に計算用の「D」、52〜5Bまで2進LEDを点灯させるための16進数値を保存している。
 プログラム中は「点灯アドレス」と「点灯数値」が存在して、アドレス50には「現在の点灯アドレス」、51〜5Bにはそれぞれの「点灯数値」を入れている。

50 ?  現在の数値
51 D  計算用
52 0  ○○○○
53 8  ●○○○
54 C  ●●○○
55 E  ●●●○
56 F  ●●●●
57 7  ○●●●
58 3  ○○●●
59 1  ○○○●
5A 0  ○○○○
5B 0  ○○○○


 これを下図の組み合わせで、アドレス内の点灯番号を取り出して2進LEDに指示する事により、左右対称にLEDが動く。
 左の点灯アドレスを決めれば、右の点灯アドレスは「D−左の数値」によって出る。アドレス51の数値は、この計算用。

左:右
54:59  ●○○:○○○●
55:58  ●●○:○○●●
56:57  ●●●:○●●●
57:56  ●●●:●●●●
58:55  ○●●:●●●○
59:54  ○○●:●●○○
5A:53  ○○○:●○○○
5B:52  ○○○:○○○○


 プログラムの最初、52〜5Bに点灯番号を入れる方法として、「Arをメモリに格納→数値をシフト」をしているが、CAL SIFTの「元の値が偶数ならフラグ1」を利用して、偶数なら4ビット目を加える(8を足す)事をしている。
 ただし、これだと5Aの時点で偶数なので、ループが終わってから5Bのみ追加している。




posted by 司隆 at 10:47 | Comment(0) | TrackBack(0) | Computer
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]


この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。