「音声合成LSI 4 フラグ」の続きです。 今回は、実際に音声データを送信しているプログラムについて説明します。 音声データに限らず、USART 送信プログラムに共通する内容です。 <PICデバイス=18F1320> 音声合成LSI は、株式会社アクエスト製 AquesTalk pico  ATP3011F4-PU です。

下図は、TIMER2 低位割り込み中に CALL される送信プログラムのアセンブラ・ソース( tlks.asm の一部)です。 
最初に、メイン処理で使われているテーブル・データ用ポインターを退避して、音声合成データ・テーブルのポインターを復旧します。(34~39行目)
続いて、テーブル・ポインター・アドレスから 1byte を送信し、ポインターをインクリメント(+1)しています。(41~42行目) その後、送信データがCRコード( 0DH )であれば送信中フラグ( tlkflg<bit0> )をクリアして、次回 TIMER2 割り込みで talksend を CALL しないように設定します。(43~47行目)
44行目の tlkcr の値は 0DH です。( intdef.asm で初期化)
49~51行目は、CRコードと異なる 1byte データを送信する時(ブレーク・コマンド)の為に準備しましたが、今回は使っていません。

tlks_tlksend

最後に、音声合成用テーブル・ポインターを退避して、上図プログラム実行前の値に復旧します。

下図はTIMER2 割り込み処理の中にあって、上のプログラムを CALL している部分( intlow.asm の一部)です。 tlkflg<bit1>が 1 の時だけ前述のサブルーチン tlksend を CALL します。
tlkflg を使ったプログラム制御の仕組みについては「音声合成LSI 4 フラグ」をご覧下さい。

TIMER2_tlksend


音声合成LSI 関連記事のインデックスはこちら → 音声合成LSI 


楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。