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


PICBASICコンパイラ

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

[第133回]



●コマンドの動作確認(5)/WR

今回は/RDコマンドの逆の働きをするコマンドです。

12)/WRコマンド

/WRコマンドはPICBASIC本体ボード(当面はPICBS02ボード、PIC18F4550搭載)上のPICのデータ領域にアクセスして指定したアドレスに値を書き込むためのコマンドです。
/WRコマンドもBASICコンパイラプログラムを作成する過程でデバッグのために作ったコマンドです。
/RDコマンドと同様一般のユーザー向きのコマンドではないかもしれませんが、I/Oポートの出力を確認したいというときなどには役に立つかもしれません。
以下は使用例です。



[第131回]の/RDコマンドのテストを行なった後の画面です。
/wr PORTB,a5[Enter]
と入力しました。
コマンドプロンプト画面では特に何も表示されずに>だけが表示されますがこのときPORTBにはA5が出力されています。
I/Oポートに出力したデータは/RDコマンドで読み込むことができます。
続いて
/rd PORTB[Enter]
と入力すると
[a5]
が表示されました。
/WRコマンドを実行するまではPORTBには’58’が出力されていました。
/WRコマンドでPORTBにA5を書き込んだためPORTBの値が’A5’になりました。
下は/WRコマンドを実行したあとの画像です。



LEDの一番上の段の表示がPORTBの出力を示しています。
1のビットは消灯し0のビットが点灯します。
ビットの表示を読むと
10100101
ですからA5になっています。
ここではわかりやすいテスト例としてPORTBに対して出力を行いましたが、そのほかのSFRレジスタに対しても/RD、/WRコマンドを実行することができます。
ただしシステムの動作に影響を与えてしまうようなレジスタに対しては/WRコマンドは使うことができません。
/RDコマンドは値を読み出すだけですからシステムの動作に影響は与えませんが/WRと/RDは「対」になっていますからそのようなSFRに対しては/RDコマンドも無効になります。

/RDコマンドと同じように/WRもBASICで使っている変数に値を書き込んだりR+16進数2桁を指定してデータレジスタに値を書き込むことができます。
そのテストとしてBASICプログラムでは使っていないレジスタアドレスにデータを書き込んでみました。



/rd R32[Enter]
を実行してレジスタアドレス032の現在の値が’00’であることを確認したあと
/wr R32,12[Enter]
を実行してからもう一度
/rd R32[Enter]
を実行してレジスタアドレス032の値が’12’に書き換わったことを確認しました。
このように/WRコマンドで汎用レジスタに値を書き込むことは一般のユーザーにとっては意味のあることではありません。
これこそBASICコンパイラプログラム開発のためだけに意味のある機能です。
汎用レジスタに対する/WRコマンドの使用は特に制限はありませんがアドレス000〜02Fはシステムが使用しているため、不用意に書き換えるとBASICコンパイラシステムが機能しなくなります。
もしもそのようなことになってもPICBASICコンパイラボードが壊れてしまうことはありません。
その場合にはコマンドプロンプトを「強制終了」しPICBASICコンパイラボードから一度USBケーブルを外して「電源OFF」にしたあと再度USB接続をしてからPICBASICコンパイラを起動させれば元の状態に戻ります。

PICBASICコンパイラ[第133回]
2024.1.25 upload

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