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

電大版TINYBASIC for PIC ミニマムお試し版4

前ページのお試し版3に2点改良を加えました。BASICランチャーのデバッグ機能は一時的に割愛しました。

img_20180701-120655.jpg

1.タイマーカウンタ
PICのtimer0を使用してBASIC上からタイマーカウンタを使用できるようにする。
timer0のオーバーフロー割り込みを使用します。
起動時PICは16MHzで作動していますのでFosc/4は4MHz、timer0の入力は0.25μS毎です。
timer0のプリスケーラを256に設定してtimer0のオーバーフロー毎に16ビット$7E(上位):$7F(下位)
のカウンタをインクリメントします。

割り込みの周期は0.25x256x256=16.384msです。

○使用例
素数を求めるプログラムの実行時間を求める
35行で下位のカウンタをゼロクリア、170行で下位のカウンタを読み実行時間を計測
計算値は割り込みの周期を16.5msとみなし、読み値*33/2としています。
他にも時間を作りたいときに役立つと思います。
img_20180630-213530.jpg


2.USR命令の復活
USR命令を復活させ、BASICからPICのサブルーチンを実行できるようにしました。
変数=USR(サブルーチンのアドレス, 引数Xレジスタ,引数B/Aレジスタ)の書式です。
※変数はダミーです。サブルーチンで書き換えない限り変数の値は保存されます。
マニュアルの文法部分を修正しました。

テストに使用したPICのサブルーチン:引数Aレジスタの値を印字する
サブルーチンはpage3に存在していますが、開始アドレスをスタックポインタに直接書き込んでいるため、
サブルーチンコールに際しページ選択の必要はありません。(movlp命令を使用しない)

    org          0x1F00
    movf        Areg,W
    banksel    TX1REG
    movwf     TX1REG
    movlb      .0
    return

○使用例
連続印字しないようにディレイを作っています。(30行/40行)
img_20180630-213820.jpg

PICの場合POKE文でユーザプログラムを作成することができませんのて、
以下のいずれかの方法でユーザプログラムを作成することになります。

1.0x0900~0x1EFFの領域の場合、BASICプログラムと一緒にTiny Multi Bootloader+で書き込む。

2.0x1F00~0x1F9Fの領域の場合、この領域はTinyMultiBootloader+で書き込めません。
この場所に書きこむ場合BASICインタープリタを再コンパイルする必要があります。→ PICの焼き直し


ダウンロードはこちらから

https://drive.google.com/file/d/1UPgWmGmXhB4md6l0aRSdLsUuKo725h48/view?usp=sharing