▼▼ ; | Moving Data (EEPROM preprogram data) | |
---|---|---|
▼▼ | ORG H'2100' | |
▼▼ | DE | H'80',H'32' |
▼▼ | DE | H'01',H'32' |
DEH'ff',H'32' |
▼▼ | DE | H'f0',H'0a' |
---|---|---|
▼▼ | DE | H'e0',H'0a' |
▼▼ | DE | H'd0',H'0a' |
▼▼ | DE | H'c0',H'0a' |
▼▼ | DE | H'b0',H'0a' |
▼▼ | DE | H'a0',H'0a' |
▼▼ | DE | H'90',H'0a' |
▼▼ | DE | H'80',H'0a' |
▼▼ | DE | H'70',H'0a' |
▼▼ | DE | H'60',H'0a' |
▼▼ | DE | H'50',H'0a' |
▼▼ | DE | H'40',H'0a' |
▼▼ | DE | H'30',H'0a' |
▼▼ | DE | H'20',H'0a' |
▼▼ | DE | H'10',H'0a' |
▼▼ | DE | H'01',H'0a' |
▼▼ | DE | H'10',H'0a' |
▼▼ | DE | H'20',H'0a' |
▼▼ | DE | H'30',H'0a' |
▼▼ | DE | H'40',H'0a' |
▼▼ | DE | H'50',H'0a' |
▼▼ | DE | H'60',H'0a' |
▼▼ | DE | H'70',H'0a' |
▼▼ | DE | H'80',H'0a' |
▼▼ | DE | H'90',H'0a' |
▼▼ | DE | H'a0',H'0a' |
▼▼ | DE | H'b0',H'0a' |
▼▼ | DE | H'c0',H'0a' |
▼▼ | DE | H'd0',H'0a' |
▼▼ | DE | H'e0',H'0a' |
▼▼ | DE | H'f0',H'0a' |
DEH'ff',H'0a' |
▼▼ | DE | H'f0',H'0a' |
---|---|---|
▼▼ | DE | H'd0',H'0a' |
▼▼ | DE | H'b0',H'0a' |
▼▼ | DE | H'90',H'0a' |
▼▼ | DE | H'70',H'0a' |
▼▼ | DE | H'50',H'0a' |
▼▼ | DE | H'30',H'0a' |
▼▼ | DE | H'10',H'0a' |
▼▼ | DE | H'01',H'0a' |
▼▼ | DE | H'20',H'0a' |
▼▼ | DE | H'40',H'0a' |
▼▼ | DE | H'60',H'0a' |
▼▼ | DE | H'80',H'0a' |
▼▼ | DE | H'a0',H'0a' |
▼▼ | DE | H'c0',H'0a' |
▼▼ | DE | H'e0',H'0a' |
▼▼ | DE | H'ff',H'32' |
DEH'00',H'00' |
END |
今回のプログラムには擬似命令を2つ使っている。1つはワークレジスタの設定に使ったCBLOCK命令。今まではEQUで直接関連付けを行っていたが、CBLOCKはスタートを指定すると、そこから順番に割り振る。もう1つはBANKSEL命令。後ろにレジスタ名を入れるとそれに合わせたバンクセレクトを行ってくれる(ただし、先ほどのプログラムでは使い方がまだ中途半端なのだ)。
今回のテストでは、扱えるシーケンスデータ数が少ないのでサーボは1つだけにした。スイッチを入れればガガ、ガガガ、と動き出すはずだ。アナログボリュームを動かすとサーボが動くというのはなんとなく当たり前という気もするが、たった8ピンのICに電源を繋ぐだけでサーボが勝手に動くのは「中のプログラム、頑張ってます!」という感じが伝わってきて楽しい。テスト回路を見ればわかるが、本当にシンプルな接続で動く。そして、本来の目的であるシーケンス動作への野望にも近づいている。
さて、こうなるとさらにいっぱい動かしたくなる。いっぱい動かすためにはデータ領域がより多く必要になる。
1つのシーケンスに対し場所と時間という2バイトのデータが必要になる今回の方法では、PIC12F675を使う場合たった64ステップの動作しか行えない。といって、シーケンス数を増やすためにデータバイトを減らすと動きや時間に制約が出る。
となると、データ総数を増やす方法を使うしかない。しかし、そのためにEEPROMの多いPICを買ってくるのもバカバカしい。というのもPICについているEEPROMデータサイズはPIC16シリーズだと最大256バイトで2倍にしかならない。もっともっとシーケンス動作ステップを増やさなければ面白くないし、将来の野望に備えるには不十分だ。
そこで次回は「外部メモリ」を使ってこの問題を「打破っ」していくことにする。
Copyright © ITmedia, Inc. All Rights Reserved.