2017/08/21(MON) 【Nチビ】デジタルスピードメーターのプログラム
はい夏休みも終わってしまいましたが
プログラミングが残ってます
課題は、今回、配列を使ったので
それを用いてタイマー割り込み時と入力割り込み時の
処理がうまく動いていませんでした。
そもそもアセンブラで配列って使ったことないです。
まぁ簡単にいうと、領域をガッツリ取って
参照ポインタをずらしていくってやり方だから
厳密には配列じゃないんですが・・・

では、なぜ配列が必要か?
最初の回で
5.48 sec で入力をカウント数≒時速 という算数をしました。
ある程度、正確な時速が求められる反面
5.48 sec 毎の更新となってしまうというデメリットがありました
それを克服するのが↓これ
フォト

365.5msのタイマーで15個の領域を用いる
で、14からカウントダウンしていき0となった時≒5.48secの時
に、センサー入力が何回あったか≒時速を7セグに出力する。
つまり、365.5ms毎に更新されていくから
リアルタイム性も確保できるし
時速の粒度も細かくでき、面倒な計算が不要。
で、実装したアセンブラが↓これ
フォト

フォト

フォト

フォト

フォト

ポイントはSPD_TBLの使い方ですかね?
入力割り込みで15個の領域全部にカウントアップして
タイマー割り込みで15個の領域全部にカウントダウンしてます

あ、回路もちょっと変えました
それはまた別に機会に
簡単にいうとPORT AとPORT Bの配線を合わせました。
RA5が入力オンリーで出力に使えないので飛ばしてます
PORT Bもそれに合わせてRB5を入力に使うように修正。
なぜかというと、リテラルを同じすることができるので
約10バイトの節約とロジックも10ステップくらい節約です。

で、ブレッドボードをわざわざ持ってきて
プログラミングをガッツリやろうと思ったら
フォト

ハマってた配列の処理がすんなり実装できました。
次はこれをどうハンダ付けするか?ですねぇ〜
それが一番面倒くさい・・・