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


PICBASICコンパイラ

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

[第38回]



●PRINT文です

前回は「詳細は次回に説明します」と書いたのですが、相変わらず時間に追われています。
ちょいと大変な作業に首をつっこんでしまいましたのでなかなか思うように時間が取れません。
1日があっという間に過ぎてしまいます。
というようなわけで本日もほんの少しだけで終ります。

前回はPIC18F4550に接続したLCDに文字列を表示している写真をお見せしました。
PICBASICで書いたプログラムをコンパイラでPICのマシン語に翻訳したPICマシン語プログラムが実行されています。
前回の写真の時から時計の針を逆にまき戻して説明をします。
PICボードをWindowsマシンにUSB接続してもとになったBASICプログラムをLOADしています。

プログラムはBSPRINTT1.TXTです。
ロードするとすぐにPICBASICコンパイラによってPICアセンブラソースプログラムに翻訳され、最終的にPICマシン語コードが生成されます。

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

/RUNコマンドを実行すると翻訳生成されたPICのマシン語コードがPICに送られてそこで実行されます。
FOR〜NEXT文でPRINT文が繰り返し実行された結果’A’〜’Z’の文字が画面に表示されました。
Windowsの画面に表示されていますがこのプログラムを実行しているのはWindowsマシンにUSB接続されたPICボードです。
正確に言うとPIC18F4550ボードとWindowsマシンの間にはUSBインターフェースの役目をするPIC18F14K50が挟まっています。
PIC18F4550のマシン語プログラムはUSB接続されているか単独で起動しているかを判断してPRINT文の文字コードをUSB回路に送るかLCDに送るかの選択をします。

PICBASICコンパイラによって作成されたマシン語プログラムリストファイルです。
2000      ;    10 for a=$41 to $5a
2000 410e     movlw 41
2002 306e     movwf a
2004 5a0e     movlw 5a
2006 1e6e     movwf R1e;to
2008 010e     movlw D'1'
200a 1f6e     movwf R1f;step
200c 18ec     call 30
200e 00f0 
2010      _floop1
2010      ;    20 print chr$(a);
2010 3050     movf a,w
2012 16ec     call 2c
2014 00f0 
2016      ;    30 next a
2016 1f50     movf R1f,w;step
2018 3026     addwf a
201a 3050     movf a,w
201c 1e5c     subwf R1e,w;to
201e 02e3     bnc $+6
2020 08ef     goto _floop1
2022 10f0 
2024 1eec     call 3c
2026 00f0

PICのプログラムでもLEDチカチカぐらいならなんとかなるかもしれませんがLCDに文字を表示するとなると簡単なことではありませんでしょう。
PICBASICコンパイラはPIC側にLCD表示のためのマシン語サブルーチンを仕込んでありますからご覧のように簡単なBASICプログラムでLCD表示ができてしまいます。

PICBASICコンパイラ[第38回]
2023.6.20upload

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