MPLAB Xのプロジェクト名をそのまま記事のタイトルにすることにした。
久しぶりにPICをやり始めて、前回、PIC16F84Aにつないだ7個のLEDを点滅させた。
今回はまずLEDを12個にし、順番にループで点滅するようにし、プッシュ・スイッチを押すと点滅の速さを変更できるようにする。
ポートAとポートB用のデータを用意して、順番に書き込む。
RA4に接続したプッシュ・スイッチを押すと、そのときの遅延用の変数の値に応じて新たな値を設定するようにしてある。
チャタリングとかをまったく考慮していない雑なつくりだ。
ただ、点滅間隔が短くなると、ボタンを離すのが遅れて遅延用の変数を連続して変更してしまうことになるので、押している間はプログラムが先へ進まないようにした。
一瞬処理が止まるのがダサいし、点滅がゆっくりなときはボタンを押すタイミングを待たなきゃいけないしで、この方法は理想的とは言えないな。
で、結局、ボタンを押している間止まるのは良しとして、ポートへの書き込みの度にRA4をチェックするように、プログラムの方を書き換えた。
ここまでの、プログラム・ソースと、回路図だ。
ちなみに、C言語に関しては、今日初めて関数の呼び方とかを知ったし、return文も書かずに値が返って来ないと悩んだりしてたレベル。
PICがらみでも、__delay_ms(d);って書いて、変数は使えませんって怒られてあわててfunc_delay_msをでっち上げたし。