2018/5/16(WED) 【後方排気】SI:シフトインジケーターをプログラム実装@
まずは「3)表示処理 」から実装
メインループから定期的に呼び出される想定
ザックリとアルゴリズムを書くと
 (1)ニュートラルか?ニュートラルなら「N」を出力
 (2)表示不能状態ならばクルクル表示
 (3)上記条件以外ならばギアを出力
こんな感じ
それをアセンブラで書くと・・・
フォト


出力パターンを引き出すルーチン
フォト

Wレジスタに表示したいギア数を入れてコールします。
ニュートラルは「0」です。

こっちはクルクルパターンを引き出すルーチン
フォト

こちらも表示するパターンの番号を
Wレジスタに入れてコールします。

あ、その前に
定数と変数をプログラムの頭で宣言します。
各出力パターンを定数、リテラルとして定義します。
変数は2つ、
フォト

O_DATAは
1〜6速のどのギアなのか?を判断した結果が入ります
測定不能の場合は先頭ビットを立ててクルクル表示にします。
K_DATAはクルクル表示をタイマー割り込みで動かすための
カウンタみたいなものです。

で変数は初期化処理にて初期化します。
フォト

O_DATAは0クリア、K_DATAには初期値の6を代入。

あとK_DATAはタイマー割り込みにてカウントします。
フォト

で、
ロジックを単純にしたかったので
K_DATAは、6からカウントダウンして
0までいったら6に初期化します。
クルクルパターンを引き出すルーチンは
そういう風に出来てます。
最初の「RETLW KURU0」は0番なので
使われることはないです。

あ、そうそう表示不能とは
速度が遅いとか回転数が低い時は
ギアを特定できないので
表示不能としてクルクル表示をしようと思っています。
Nチビが1〜3速が表示できないので
クルクルにしたので、それと同じですね。