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ステップくらい節約です。 で、ブレッドボードをわざわざ持ってきて プログラミングをガッツリやろうと思ったら ハマってた配列の処理がすんなり実装できました。 次はこれをどうハンダ付けするか?ですねぇ〜 それが一番面倒くさい・・・ |