楽天市場
[無料でホームページを作成] [通報・削除依頼]

PICで電大版TINYBASIC 実装編その1

<実装編その1:BASICランチャーの製作>

ここからはPIC16F18857に電大版TINYBASICを実装する話ですが、
TINYBASICの前にまずBASICランチャーを作成します。

このBASICランチャーを電大版TINYBASICに先立って起動させ、BASICランチャー
からTINYBASICを起動させるようにします。

○TeraTerm起動後、リセットSWを押してBASICランチャーを起動
img_20180618-033023.jpg

BASICランチャーのイメージとしてはデバッグ機能が最小のLILBUGといったところでしょうか。

以下にBASICランチャーの機能をまとめます。

①PIC16F18857のPPSの設定                 RC7をTX、RC6をRXに設定 2018.06.20 訂正RC7をRX、RC6をTXに設定
②シリアルポートの初期化                     PICのクロックを32MHz,ボーレートを19200bpsに設定
③TINYBASICの起動                             コールドスタート(プログラム消去)/ホットスタート(プログラム温存)
④メモリダンプ                                    Ox2000から0x2FFFまで(FSRアドレス)のRAM値をダンプ表示
⑤レジスタ値表示機能                            (デバッグ用、表示項目はLILBUG準拠)
⑥ハードウエアスタック深さ/値の表示機能  (デバッグ用)
⑦SFRダンプ機能                                  (デバッグ用)

○使用例1
メモリダンプ 表示のアドレスはFSRアドレス、(0x2000はバンク0の0x20に相当)
"F"を入力すると0x2F00から0x2FFFまでを表示する。
img_20180618-025139.jpg

○使用例2
TINYBASICの起動/再起動
"G"コマンドを入力してTINYBASICを起動、プログラム作成後"EXIT"コマンドでBASICランチャーに帰る
"H"コマンドを入力してBASICに復帰、プログラムは温存されている。"G"コマンドでは消去される。
img_20180618-025542.jpg

○使用例3 デバッグ機能
TINYBASICのソース中にブレークポイントを設定 ---> "call dbg" してコンパイル
img_20180618-030447.jpg
プログラムを作動させ、ブレークポイントに到達すると、以下のようにレジスタ値を表示して一時停止
img_20180618-030710.jpg

表示中 Pはプログラムカウンタ、Xは仮想Xレジスタ、Aは仮想Aレジスタ、Bは仮想Bレジスタ、CはSTATUSレジスタ、
Sは仮想スタックポインタを示す。(LILBUGのレジスタ表示に合わせている。)
HはPICのハードウエアスタックを示す。表示は現在のSTKPTRの値 現在のスタック値 ひとつ前のスタック値
キー入力によりプログラムを再開。"D"キーを入力した場合はバンク0のレジスタ(0x00_0x1F)とRAM(0x20_0x6F)
バンク共通RAM(0x70_0x7F),バンク1のレジスタ(0x80_0x9F)とRAM(0xA0_0xEF)を表示した後プログラムを再開。

○TINYBASIC搭載時のメモリマップ 
割り込みは使用せず、BASICインタープリタとBASICランチャーをページ0の領域(~0x07FF)に納めた。

img_20180618-032330.jpg