Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC16F84A XC8 LED Blink 05-08

MPLAB Xのプロジェクト名をそのまま記事のタイトルにすることにした。

久しぶりにPICをやり始めて、前回、PIC16F84Aにつないだ7個のLEDを点滅させた
今回はまずLEDを12個にし、順番にループで点滅するようにし、プッシュ・スイッチを押すと点滅の速さを変更できるようにする。

ポートAとポートB用のデータを用意して、順番に書き込む。
pic16f84a_xc8_led_blink_05-01
RA4に接続したプッシュ・スイッチを押すと、そのときの遅延用の変数の値に応じて新たな値を設定するようにしてある。
pic16f84a_xc8_led_blink_05-02
チャタリングとかをまったく考慮していない雑なつくりだ。
ただ、点滅間隔が短くなると、ボタンを離すのが遅れて遅延用の変数を連続して変更してしまうことになるので、押している間はプログラムが先へ進まないようにした。
pic16f84a_xc8_led_blink_05-03

一瞬処理が止まるのがダサいし、点滅がゆっくりなときはボタンを押すタイミングを待たなきゃいけないしで、この方法は理想的とは言えないな。
で、結局、ボタンを押している間止まるのは良しとして、ポートへの書き込みの度にRA4をチェックするように、プログラムの方を書き換えた。
pic16f84a_xc8_led_blink_05-04
ここまでの、プログラム・ソースと、回路図だ。
pic16f84a_xc8_led_blink_05
ちなみに、C言語に関しては、今日初めて関数の呼び方とかを知ったし、return文も書かずに値が返って来ないと悩んだりしてたレベル。
PICがらみでも、__delay_ms(d);って書いて、変数は使えませんって怒られてあわててfunc_delay_msをでっち上げたし。

このエントリーをはてなブックマークに追加

Posted under: MPLAB X, PIC16F84A


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.