; ;  CONTROL_CODEの判定ジャンプテーブルの解説資料です ; 2005/09/13 BY Y.SAEKI  改:7:53 2005/09/17 ;******************************************************** ; やっと 一応の動作はするようになりまして Linux本体サイドのプログラムをいじり始めるところですが ;まだ 完成をみておりません 多分 永遠にヴァージョンアップが行われることだろうと思われます ;このリモート装置だけで セルフチェックをさせるとすれば どのような仕掛けが良いかな? ;CheckSum・応答/再スタートのコードも割り当てようか? 大事な通信部分にも活用できるし いいね ;PICマイコンEEPROMの活用をしたい ヴァージョン管理 カスタム、ローカライズ? ;REは常時監視だ どこかLCDの片隅にでも 砂時計か水車の表示をさせておくか? ;2005/09/17 CGRAM外部設定フォントの文字コードになっている 0x0〜7を外す? もっといい方法がある ; CGRAMへの書き込みのコードと同じように読み出すのもcontで引き続きのデータの形とし プログラムエリアの ;空きやEEPROM部にもパターンを登録しておけば CGRAMに書き込みすぐに表示に使用で フォントを多く出来る ; ;******************************************************** CONTROL_CODE MOVF RXREG_1,W ;get received data(0x00〜0x1F) ;このあと制御文字分岐処理 <- ADDWF PCL,F ;計算ジャンプ式です JUMP_TABLE ;JUMP先  コード キー 動作説明・解説 留意点など ; Hex Oct GOTO DISP_TEST ;0x00,\0 ^@ ヌル 画面クリア、カーソルホーム GOTO POS_1 ;0x01,\1 ^a LCD1行目頭へ POS保存  ; 引き続きの\オクタルデータ有りも要検討 GOTO POS_2 ;0x02,\2 ^b LCD2行目頭へ (無ければ行頭 指定あればその位置へ GOTO POS_3 ;0x03,\3 ^c LCD3行目頭へ  位置データは文字とは重ならない GOTO POS_4 ;0x04,\4 ^d LCD4行目頭へ  文字コードの20h〜で その場合直ぐ戻り) GOTO POS_RSTR ;0x05,\5 ^e POSコール以前の位置に戻す GOTO DISP_TEST ;0x06,\6 ^f GOTO DISP_TEST ;0x07,\7 ^g ベル GOTO DISP_BS ;0x08,\10 \b ^h BS, バックスペース (行頭判断し行替え処理もします) GOTO DISP_clr ;0x09,\11 \t ^i HT,  タブ ・のような文字にしてあります GOTO DISP_TESTA ;0x0A,\12 \n ^j LF, \rと同じ動作にした GOTO DISP_TEST ;0x0B,\13 \v ^k VT, GOTO POS_1 ;0x0C,\14 \f ^l FF, 経緯あっていま カーソル位置設定 GOTO DISP_CR ;0x0D,\15 \r ^m CR,改行・行末まで空白埋めもします ; 行頭では(4行と限られたエリアなので)改行せずです ; SP+改行で一行空白が行えます GOTO DISP_TEST ;0x0E,\16 ^n SO  GOTO DISP_TEST ;0x0F,\17 ^o SI eepromから64バイト読み取り GOTO LED_ON ;0x10,\20 ^p LED on GOTO LED_OFF ;0x11,\21 ^q LED off GOTO DISP_TESTr ;0x12,\22 ^r ロータリエンコーダの操作状況データの応答をします ; チャタ除去処理付でミリ秒サイクルで常時監視し積算データを保持  ; その時点での積算値の下位4ビットのhex表示(0〜F)データの応答 ; (まだ RE使用のLinux側プログラムの実績はないので 将来 ; 送るデータの形式は変わるかも 生のバイトデータの方がいい?) ; GOTO DISP_TESTs ;0x13,\23 ^s ボタンSW読み取り用 4つのボタンが下位4ビットに対応していて ; 40hを加算し文字化した応答です 4つのボタン全てopenで "O"(4Fh) ; 押された位置がlowの文字G,K,M,Nなどです ; 連続押しで困る場合は 一度開放されるのを待つ処理などで、  ; 同時押し判定は時間差を配慮し数回のコールなどして対処のこと  ;   GOTO DISP_TEST ;0x14,\24 ^t GOTO DISP_TEST ;0x15,\25 ^u GOTO DISP_TEST ;0x16,\26 ^v GOTO DISP_TEST ;0x17,\27 ^w GOTO DISP_TEST ;0x18,\30 ^x GOTO DISP_TEST ;0x19,\31 ^y GOTO DISP_TEST ;0x1A,\32 ^z GOTO DISP_TEST ;0x1B,\33 ^[ GOTO CMD2LCD ;0x1C,\34 ^\ LCDへの直接制御 (使用には注意が必要です) ; 引き続きの受信データまでも必要とする特別なコードです ; Linux本体側のプログラムで LCDモジュールの機能を制御、 ; 例えば ^\^aで表示クリア、^\^b or ^cでカーソルホーム ; ^\^lでブリンクオフ、^\^mでブリンクオン など行えます ; CGRAMアドレス設定のあとフォントパターンデータのセット ; し 自作のキャラクタも出せます しかし 0x20〜3fなどは ; LCDの動作モードの設定といった機能設定ですので 問題を ; 起こします また 使用後は初期設定に戻すことが肝要です ; LCDモジュールの仕様書を詳しく調べながら使用するように GOTO DISP_TEST ;0x1D,\35 ^] GOTO DISP_TEST ;0x1E,\36 ^^ GOTO DISP_TEST ;0x1F,\37 ^_ ;********************************************************