2023.6.28
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第42回]



●PRINT文/PICでのLCD表示(2)

[第40回]ではPICBASICコンパイラのPRINT文はターゲットのPICボードをWindowsパソコンに接続した状態ではWindowsのコマンドプロンプト画面に表示されますがWindeowsパソコンと切り離して単独で起動(スタンドアローン)するとそのPICボードに接続したLCD表示器に表示されますという説明をしました。
PICにLCD表示器を接続してそこに表示するのにPRINT文を使うことを考えた当初はそういうルールがよいのではないかと思ってそのような機能にしました。
しかしWindowsパソコンに接続した状態(以前にも書きましたように実際には間にUSBインターフェース用のPICボードを介して接続しています)でBASICプログラムの作成やデバッグをしているときにLCD表示器を接続している場合を想定すると、あるいはその状態でもコマンドプロンプト画面にではなくてLCD表示器に表示してそのような表示でよいかどうかを確認できるとなおよいのでは、と思いつきました。
そこでそういう機能を付加しました。

[第40回]で使ったプログラムをもとにしてそのように働くように機能を追加しました。

そのように変更したプログラム(bsprintt5b.txt)をロードしました。
BASICテキストプログラムをロードするとコンパイラが起動してPICマシン語コードに変換してそのプログラムコードをPICのターゲットボードに書き込むところまでが自動で行なわれます。

LISTコマンドでプログラムリストを表示しました。

もとのプログラムの先頭に
R2F=1
を追加しただけであとはもとのプログラムのままです。
/RUNコマンドでプログラムを実行しました。
見たところプログラムは実行されたようですが[第39回]と違ってコマンドプロンプト画面にはPRINT文の実行結果は表示されません。

その結果はLCD表示器に表示されています。

[第40回]ではマシン語プログラムを書き込んだPICターゲットボードをWindowsパソコンから切り離してJ1にジャンパピンをセットして電源ONしたときにLCD表示器にPRINT文の実行結果が表示されました。
しかし今回の写真ではUSBインターフェース用のPICを介してUSB接続された状態のままでJ1にジャンパピンは実装されていません。
これはさきほどのコマンドプロンプト画面で/RUNを実行したときの写真です。
今回追加した
R2F=1
が画面表示とLCD表示を切り換えるスイッチになっています。
RXXはターゲットボードのPICのユーザー用レジスタ(前回説明しましたGPR、汎用レジスタ)のアドレスを指定する特殊な変数名です。
R2FはGPRのアドレス2Fを示しています。
実はターゲットボードのPICに書き込み済みのシステムサブルーチンによって起動時にスタンドアローン状態を認識するとR2Fに1がセットされます。
それ以外のときには0がセットされるのですがそこをいわば特権的に1にしてしまうことでPRNT文が常時LCDに表示を行なうようにスイッチするのがR2F=1なのです。

R2F=1はPRINT文をLCDに対して行なうようにするための機能ですから[第40回]のようにターゲットのPICボードを単独で起動した場合にも普通にLCDに表示が行なわれます。
下は上の写真の状態からUSB接続を切り離して[第40回]のように単独起動させたときの写真です。

デバッグが完了した段階でも最終的なBASICプログラムにR2F=1が残っていた場合でもあえてR2F=1の文を削除する必要はありません。
ただし注意すべきことがあります。
R2F=1が書かれたプログラムをLCD表示器を接続しないで実行するとシステムがハングアップします。
R2F=1はLCD表示器が接続されていることが前提の機能だからです。

PICBASICコンパイラ[第42回]
2023.6.28upload

前へ
次へ
ホームページトップへ戻る