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


PICBASICコンパイラ

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

[第131回]



●コマンドの動作確認(3)/RD

一週間近く間が空いてしまいました。
正月からずっと片付けなければならない作業に追われていて結局のところホームページを書くところまではいけなくて時間切れで終ってしまう毎日です。
まだ片付かないところが残っていますのでもうしばらくはぼちぼちの更新が続きそうです。
今年も気長なお付き合いをお願いいたします。

この何回かはPICBASICコンパイラのコマンドについて書いています。
今回は/RDコマンドです。
/RDコマンドは[第12回]で書いています。
そのときはPRINT文についての説明が中心でしたので/RDについてはほんのさわり程度に書いているだけです。
ですので今回は/RDについて整理して書くことにします。

11)/RDコマンド

/RDコマンドはPICBASIC本体ボード(当面はPICBS02ボード、PIC18F4550搭載)上のPICのデータ領域にアクセスして指定したアドレスの値を読むためのコマンドです。
BASICプログラムを作って実行したときにそこで使っている変数の値とかI/Oポートの状態などを確認したい場合があります。
そんなときのための機能です。
以下は使用例です。
/RDの機能を説明するためにまずBASICプログラムを実行します。
BASICプログラムBSTEST03.TXTをロードしました。

BASICプログラム(ソースプログラム)をロードすると自動的にコンパイルされてアセンブルリストファイルとマシン語のオプジェクトファイルが作成されます。

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

最初にPORTBを出力に設定します(10行)。
変数abcに16進数の55を入れます(20行)。
abcに3を加算してその結果を変数xyzに入れます(30行)。
xyzの値は16進数の58になります。
xyzの値をPORTBに出力します(40行)。
abcとxyzの値を画面に表示します(50行)。

/RUNコマンドを実行しました。

マシン語オブジェクトファイルのデータ(PICマシン語プログラムコード)がPIC18F4550に書き込まれたあと、そのプログラムが実行されました。
今はまだデバッグ中なので色々余計な表示がいっぱい出ています。
プログラムの実行結果は画面の下の方
program started
の下にPRINT文が実行された結果が表示されています。

プログラムが実行された結果PIC18F4550のPORTBに変数xyzの値(16進数の58)が出力されました。

出力表示を確認するためのLEDテストボードの一番上の一列がPORTBの出力です。
LEDは値が0のときに点灯し1のときに消灯します。
それを読むと
01011000
ですから
58になっています。

ここからが/RDコマンドの説明です。

/rd PORTB
PORTBの値を読み込んで表示します。
このようにPICの特殊関数レジスタ(Special Function Resister)のレジスタ名を指定することでそのレジスタの現在の値を読むことができます。

/rd R81
レジスタアドレス’81’の値を読んで表示します。
PIC18F4550のPORTBのレジスタアドレスは’81’です。
このようにRxx(xxは2桁の16進数)を指定することでPICのレジスタアドレスの00〜FFの値を読み出すことができます。
PICのレジスタアドレスについては次回に説明する予定です。

/rd abc
PIC18F4550上に置かれたBASIC変数abcの現在の値を読んで表示します。

/rd xyz
PIC18F4550上に置かれたBASIC変数xyzの現在の値を読んで表示します。

/rd R30
PIC18F4550のレジスタアドレス’30’の値を読んで表示します。
BASIC変数abcはPIC18F4550のレジスタアドレス’30’に割り当てられています。
PICBASICコンパイラではBASICの変数はPIC18F4550のレジスタアドレス30から割り当てられていきます(将来は変更になるかもしれません)。
BASIC変数とPICのレジスタアドレスの関係はユーザーには必要のないことですがコンパイラ開発のためのデバッグ機能としては必要です。

/rd R31
PIC18F4550のレジスタアドレス’31’の値を読んで表示します。
BASIC変数xyzはPIC18F4550のレジスタアドレス’31’に割り当てられています。

説明の途中ですが時間がなくなってしまいました。
この続きは次回にいたします。

PICBASICコンパイラ[第131回]
2024.1.23 upload

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