メッセージテーブルの作り方


【メッセージテーブル】

液晶表示器や、RS232C経由のシリアル通信で、色々なメッセージを送信する
ということは、使う機会が多くあります。
アセンブラで1文字ずつ送信しなければならないので、作るのは結構面倒な
ものです。
そこで、メッセージデータの文字列をテーブルとして、プログラムメモリの定数
として確保しておき、この文字列データを順番の取り出すということができれば
便利に使えます。

ここではこのようなテーブルの作り方と、特にPIC18Fシリーズで新たに追加された
テーブルポインタを使ったアクセスの仕方を説明します。

【メッセ-シテーブルの作成】

メッセージデータをテーブルとして作成するためには、DB擬似命令を使い下記
のようにします。
つまり、メッセージを文字列としてDB命令でバイトデータで並べて確保し、
最後に00をメッセージの終わりの記号として追加します。これをアセンブルすると
下記のように1ワードに2文字ずつ順番に並べて確保してくれます。




【ポインタテーブルの作成】

次に上記のメッセージテーブルの各メッセージの先頭アドレスを並べたテーブル
を作成します。このテーブルにはDW擬似命令を使います。
これで、下記のように、各アドレスの下位16ビットがデータとして確保されます。
これをテーブルポインタ用に使います。





【アクセスプログラム】

上記2つのテーブルを使って、メッセージデータを順番に取り出すプログラムを
作成しましょう。
すべてテーブルポインタ命令を使いますので、メッセージデータをどこに配置
しても問題なくアクセスできます。
PIC16FでADD PCLを使ったルックアップテーブルの場合では、アドレスxx00を
またがってデータが並んでいると正常動作しなくなりますが、今回の方法では
問題なくアクセスできます。

 このサブルーチンプログラムは下記のようになります。このサブルーチンを
呼び出す時には、Wレジスタにメッセージ番号を代入してCALL RSMSGで
呼び出します。
まず、ポインタテーブルの先頭アドレスをテーブルポインタに代入し、これに
メッセージ番号の2倍を加えます。これでメッセージ番号に対応したメッセージ
テーブルの先頭アドレスを取り出します。
 この先頭アドレスを新たにテーブルポインタに代入してから、メッセージの
文字を順番に取り出しては、送信出力しています。
データが00で終わりと判定して抜け出します。







  トップページへ