「LCDに自動転送2」の続きです。 今回は TIMER2 の割り込み処理について説明します。 < PICデバイス=PIC18F1320 > LCDはSUNLIKE社製SC2004Cです。
下図の TIMER2 低位割り込み処理に当たるプログラムで、前回(LCDに自動転送2)で説明したプログラムを CALL してLCDにコマンドとデータを送ります。 他に TIMER2 の設定やメイン処理によるワーク及びLCDの初期化と TIMER2 割り込み許可と言ったサポートを受けて正常に動作するものですが、前回とこの記事のプログラムがLCD自動転送プログラムの中核です。
このLCDは20桁x4行で合計80文字を表示しますが、他の製品との互換性を保つ目的でLCD内部のメモリーが連続しておらず、連続する40文字の内部メモリーが二つあります。 この為、40文字送る度にLCD内部メモリーの先頭アドレスを指定し直す必要があります。 アドレス指定の後にも40usec以上待たなければ次のデータを送れない為、アドレス指定2回と80文字転送の合計82回の TIMER2 割り込みで全画面を転送します。
先にフローチャートをご覧下さい。
40文字送る都度、LCD内部アドレスを書き換えますが、先のデータ転送で40桁目が終了すると lcdw1 にbit7=1 のコマンドを書きこみます。 次の TIMER2 割り込みのタイミングで lcdw1 の bit7 (内部アドレス更新要求)をチェックして、実際にLCD内部アドレス書き換えコマンド( lcdw1 の値がコマンドの値)を送って bit7 をクリアします。 表示データを送るのは次回の TIMER2 割り込みのタイミングになります。
以下はそのアセンブラ・ソースです。
先のフローチャートと並び順も一緒なので、見比べれば解り易いのではないかと思います。
LCD関連記事のインデックスはこちらです。 → LCDに自動転送
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。
下図の TIMER2 低位割り込み処理に当たるプログラムで、前回(LCDに自動転送2)で説明したプログラムを CALL してLCDにコマンドとデータを送ります。 他に TIMER2 の設定やメイン処理によるワーク及びLCDの初期化と TIMER2 割り込み許可と言ったサポートを受けて正常に動作するものですが、前回とこの記事のプログラムがLCD自動転送プログラムの中核です。
このLCDは20桁x4行で合計80文字を表示しますが、他の製品との互換性を保つ目的でLCD内部のメモリーが連続しておらず、連続する40文字の内部メモリーが二つあります。 この為、40文字送る度にLCD内部メモリーの先頭アドレスを指定し直す必要があります。 アドレス指定の後にも40usec以上待たなければ次のデータを送れない為、アドレス指定2回と80文字転送の合計82回の TIMER2 割り込みで全画面を転送します。
先にフローチャートをご覧下さい。
40文字送る都度、LCD内部アドレスを書き換えますが、先のデータ転送で40桁目が終了すると lcdw1 にbit7=1 のコマンドを書きこみます。 次の TIMER2 割り込みのタイミングで lcdw1 の bit7 (内部アドレス更新要求)をチェックして、実際にLCD内部アドレス書き換えコマンド( lcdw1 の値がコマンドの値)を送って bit7 をクリアします。 表示データを送るのは次回の TIMER2 割り込みのタイミングになります。
以下はそのアセンブラ・ソースです。
先のフローチャートと並び順も一緒なので、見比べれば解り易いのではないかと思います。
LCD関連記事のインデックスはこちらです。 → LCDに自動転送
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。