PICマイコンへの道 〜その7 そろそろアセンブラ〜

                              2010年3月20日 by ごきち

 

 

◆再びLED表示機

 一列のLED表示機がうまく動いた。

 一気に集中して弄れたので、もう飽きるかな?とも思ったが、仕事も忙しなくなり機械弄りの余裕がなくなっただけ。

 週末に新たなネタを思いついた。

 

 回転式のピカピカ光るおもちゃに仕込んで文字を出そう!

 

 思い立ったら即実行。

 久々に夜中に半田付けを始めた。

 

 ユニバーサル基板を長細く切って、LED、抵抗、と18PIN の ICソケットの代わりに一列の丸ピンソケット。

 セラロックはジャンク基板に山盛りあったので8MHzらしきものをチョイス。

 回路はブレッドボードで作った回路からタクトスイッチを除外した。

 

 写真なんか撮っている暇はない。いきなり完成。(笑

 

 PICを載せて重心に穴を開ける。

 

 これをLEDの回転おもちゃの回転軸に固定する。

 電源も供給できるので一気に連結する

 

 接触不良も無く、とりあえず回って光った。

 

 ただ、PICは前のプログラムのままなのでどうも表示と回転数が合わない様子。

 更にはLEDの並びが上下逆になっていることが判明する。

 

 表示データのLSB−MSBを入れ替えて再プログラムする。

 また、何度かタイマールーチンの定数を変えて、書き込み、動作確認を繰り返す。

 試行錯誤の結果、8ビットのループ一発で丁度良い時定数を見つけた。

 

 おー素敵!それでも完全には文字は止まらない。

 

 完全に止まらないの図

 kaiten1_.mp4

 止めたい。きっちり同じ位置から表示したい。 

 

 位置を検出する方法を考えること数分。

 ジャンク基板からよさ気な物を見つけた。

 

 「560」 と刻印がある。ホールIC らしき物。

 ネットで検索すると立派な位置検出用のホール素子であることが判明する。

 

 早速ポートAのビット0に組み込む。

 

 磁石は冷蔵庫にへばり付いていたもの(笑

 

 ソフトウェアを変更する。

 基のプログラムに、ポートAのビット0が「1」だったら表示ルーチンに飛んで、一度表示した後戻ってくるようにすれば良い。

  

 メインルーチンでサブルーチンを繰り返したままだった所にリターンを入れればOK。

 

 早速PICに焼いて試運転確認してみるが、ホールICの回路が増えた分、重心がずれた。

 バランスが悪く手放しでは運転できなくなっている。

 

 良いバランサーを発見する

 

 釣り用のガン玉。究極のバランサー(笑

 

 適当に一つかませてみる

 

 バッチリ。一発フリ取り完了。

 

 試運転

 kaiten2_.mp4

 磁石の位置に同期している。成功!

 

 

 ケースのふちに磁石を固定して完成!

   

 でけた!

 

◆完成

 動作チェック

 

 綺麗に止まって見える。いいじゃん!

 

 動作状態

 kaiten3_.mp4

 始動時にだんだんと文字の幅が広くなってくる所がGOOD!

 

 

 ここまで作れると応用が広がる。

 赤外線リモコンで表示が変るようにするのもよさそう。

 文字固定で表示するだけでなく、流れるように表示させるのも面白そう。

 これで時計を表示するのもお洒落かな?

 

 どんどんとネタが膨らむ。

 

 しばらくは妄想でお腹が一杯になりそうだ。(笑  

 

 

◆あとがき

 Z80のCPUの代わりにちょっとしたコントローラーを作ってみたい。と、思い始まったPICマイコンへの道。

 

 「たった35個も命令しかないんだったらマシン語覚えたほうが楽だろ。だったら遊べそうだわ。」

 

 これが大きな間違いだった。

 過去に Z80CPU ボード用に2Kバイト程のシステムモニタを直接マシン語で作った経験があった。

 それより少ない命令だったら楽勝のはず。

 直接マシン語を打ち込んで簡単チチンプイプイで好きなことできるだろう、と思ったのがそもそもの間違い。

 

 25年前に Z80CUP ボードを作った時も言えたこと。

 プログラムの共有が出来ない。

 他人が作った優秀なルーチンが上手く利用できない。

 ボード上のメモリを直接操作して遊んでいる分には良かったが、それ以上は辛かった。

 しょうがなく PC8801 とデータリンクさせてカセットテープにデータを保存していた記憶が甦った。

 ぴ〜 ぎゃぎゃぎゃぎゃぎゃ(笑

 

 今はZ80の時代とは違う。

 プログラムを作る、ライティングソフトに読み込む、書き込む過程の全てがパソコン処理。

 今の私の手法では、速攻でマシン語プログラムを書いても、ライティングソフトに読ませる為に手動でHEXフォーマットに変換しなくちゃいけない。

 更にはネットを探せばなんでもある時代。優秀な処理ルーチンがわんさか!

 アセンブラが使えると、それらを簡単かつ有効に利用できることに気付いた。

 

 マシン語も分かったことだし、一からアセンブラを勉強するか。

 PICのニモニック覚えないと。

 まだ間に合いそうだ。

 

 思考は少しだけ進歩した。

 しかし、当初の目的だった「シーケンスピコピコ用のコントローラ」の完成はかなり先になりそうだ。(笑

 

 

 

                                                    つづく

 

 PICマイコンその8に進む

 PICマイコンその6に戻る