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

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

2024.04.19 追記
FLASH領域に書き込まれたSTAR TREK のBASICプログラムに行の欠落がありました。
プログラムを修正しリンク先を変更しました。、
2024.04.19 追記ここまで

前ページのお試し版4に論理演算の関数を加えました。
2018.07.03 追記あります


<論理演算に関して>
電大版TINYBASICの仕様ではIF文中の和事象や積事象は以下のように記述できますが、

IF (((A>0)*(A<9))+((B>0)*(B<9)))>=1 GOTO 100

Aが1から8またはBが1から8の範囲にあれば行番号100にジヤンプ


変数に対する論理演算の関数がありません。

論理演算の関数が無いとPICのレジスタを操作する際に不便ですので、
NAKAMOZU TINY BASICのソースを基にAND(A,B)、OR(A,B)、XOR(A,B)の関数を追加しました。
マニュアルも更新しました。


○使用例
16MHzで作動している時のOSCCON値を読み取り、ビット3をクリアしビット7を立てる。
32MHzで作動させる値を求める。#($99)=AとすればOSCCON値が書き換えられる。
img_20180702-071331.jpg

○TEK端末でのグラフィック表示例
img_20180707-001152.jpg

2018.07.03 タイマカウンタと割り込みに関する追記

前ページで記載したタイマカウンターですが、
機能を拡張して割り込み全般に対応させることを目的に、
割り込みが発生すると$7C(上位):$7D(下位)に格納されたアドレスに間接ジャンプする仕様に変更しました。

割り込みを使用する場合、ユーザーがPICの割り込み処理プログラムを作成し、フラッシュに書きこむ必要があります。
BASIC起動後、BASIC上で$7C(上位):$7D(下位)の内容を上記割り込み処理アドレスに変更することで
ユーザーの希望する割り込みを処理することができます。

ちなみに初期状態で起動されるタイマカウンタの割り込みプログラムは以下のとうりです。(TMRH:$7E/TMRL:$7F)

         org     0x1F00
TM000    incf    TMRH,F            ;TM0 Interrupt
         incfsz  TMRL,F
         decf    TMRH,F
         bcf     INTCON,TMR0IF
         retfie


<割り込み(ベクター)変更の手順>
①初期状態ではTM0の割り込みが有効になっているので、INTCONレジスタのTMR0IEビットをクリアして
TM0の割り込みを無効化 (下図参照 40行目でTM0割り込み禁止)
img_20180703-110114.jpg
②$7C(上位):$7D(下位)の内容を変更
③INTCONレジスタやPE1/2/3レジスタを書き換えて目的の割り込みに対応させる。
④割り込みを使用しなければ$7Bから$7Fの領域を自由に使えます。

img_20180703-110904.jpg

ダウンロードプログラムを更新します。
追記ここまで

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

https://box.yahoo.co.jp/guest/viewer?sid=box-l-ynvbblq5wtn3l5nx64zrgryqbm-1001&uniqid=529c1ae8-ed45-4321-89f2-1eba0ea80e31&viewtype=detail

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

2024.04.19 リンク先変更
BASICインタープリタ、文法表、BASIC-HEX変換マクロ(TERATERM用)、BASICサンプルプログラム
https://drive.google.com/file/d/1eMZF-wp0nU-a9t4QlQ8fLaEhAByR-Ttw/view?usp=sharing