2018/5/18(FRI) 【後方排気】SI:シフトインジケーターをプログラム実装B
引き続きプログラム実装ですが
あとは「4)タイマー割り込み処理」だけ
なんですが・・・
その前に
 (エンジン回転数) ÷ (速度)
をするロジックから
アセンブラでの割り算のアルゴリズムは
以前のをちょっと応用
アルゴリズムは過去ネタを参照のこと
 →【Nチビ】デジタルスピードメーターを割り算する


きっともっと効率的なアルゴリズムがあるんだろうけど
まずは素直な実装にしておく
割り込み処理でこんなに処理してもいいのか不安ですが・・・
単純な割り算なのにこんなに処理が掛かります
フォト

そして「4)タイマー割り込み処理」の本体。
ギアの特定ロジックがバカロジックでスミマセン・・・
ここもわかりやずくが優先。
処理速度やスタックやメモリの使用量はあとまわし。
フォト

こっちだけでも割り込みで処理しすぎのような気がします
あ、
あと変数宣言に割り算で使う変数を追加しておかないと
フォト

定数の宣言も
各ギアの算数から求めた定数です。

フォト

(エンジン回転数) ÷ (速度) が
17だったら1速
6だったら6速といった感じ
小数点以下切り捨てちゃっているから
境界値で誤ったギアを示すかな???
ちょっと心配。
そしたらまたアルゴリズムから考え直しかな?

ということで
一通りプログラムもできたかな?
まだコンパイルしてないけど。
実際は段階的に実装していくつもりです。
こんだけアセンブラで長いと
どこが悪いかわからなくなるから。
次はブレッドボードかな?