2016/05/08(SUN) | 【Nチビ】シフトインジケータ(暁の蜂起編) |
---|---|
前回、タイマー割込みでクルクルするところまで出来ました。
次はスイッチ入力で、4、5、6と表示するようにプログラミング。 結局。入力割込みを使うことにしました。 で、 「4」を表示 ![]() 「5」を表示 ![]() 「6」を表示??? ![]() RA4がオープンドレインで、プルアップして電源もらっているんですが そのせいかな?うまく光りません。 抵抗値をいろいろ変えてみたけど結局だめ。 んじゃ、RA4の出力はRB0を使うように変更。 回路も変更。 ![]() あ、ちなみに今までプログラムは スイッチ入力をプルダウンで書いてましたが 回路的にはプルアップなんで、そこも修正。 無事に6の出力に成功! ![]() う〜む。プログラム的に面倒。。。 7セグなんで7つ出力すればいいんだけど PORTAは、RA5が入力オンリーポートで RA4がオープンドレインと・・・ そうなるとPORTAは出力が6つじゃん・・・ ちなみにPORTBを入力に使っているのは RB4〜RB7が入力割込みが使えるポートだから。 というのを踏まえてプログラムも見直しです。 この辺は、お約束。 ![]() 変数とリテラルの宣言 ![]() プログラムの先頭。いきなりGOTOしてますが・・・ ![]() 割込み処理。タイマー割込みと入力割込みを処理しています。 ![]() 初期化処理。各レジスタを設定しています。 あとメインルーチンはいつもながら空っぽです・・・ ![]() WAIT処理は変わらず・・・ ![]() 入力の判定処理。 XOR使うように修正。前までのは動かなかった・・・www ![]() クルクルの処理。カウントダウンしていって それによりPC(プログラムカウンタ)をイジって出力を決めています ![]() 本当はPORTAに出力するだけ十分だったんだけど RA4が使えないので RA4出力の値をRB0に出力するようにしゅうせい。 ![]() ↓こんな感じです。 http:// あ〜ハンダづけしないと〜面倒だなぁ〜 GWが終わるなぁ〜 ほら、終わった・・・ |