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


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第191回]



●PICUSBIO用BASIC説明書(6)BASIC命令(2)

今回は前回(BASIC命令)の続きです。

5章  BASIC命令(ステートメント)の続きです

OUT

指定したI/Oアドレスに8ビットのデータを出力します。
アドレス、データとして変数、配列や数式を使うこともできます。
ただしI/Oアドレス、データ共に1バイトなのでその値は0〜255($00〜$FF)に限られます。
PICUSBIOに特化したBASICなのでこのOUT命令はPICUSBIOボードのI/O回路に対するアクセスに限定した機能になっています。
アドレスとして$04よりも大きい値を指定しても上位ビットは無視されてアドレス0〜3として働きます。

[使用例]
10 OUT $83,$80
上の文の実行によりI/Oアドレス$03のI/Oアドレスに8ビットのデータ$80が出力されます(アドレスとして$83を指定しても$03になります)。
(PICUSBIO−01の基板上に実装されている82C55のアドレスが$00〜$03になっていて$03は82C55のコントロールワードアドレスになっていますから上の文は82C55のA〜Cポートを出力にセットすることになります。

PRINT

ディスプレイ画面に、変数、配列の値、計算式の値、文字列などを表示します。
表示は現在のカーソル位置から行われ1行で表示できないときは次の行に自動的に改行して出力されます。
要素をカンマ(,)で区切って複数個記述することができます。

[使用例]
10 A=123:B=200:X$=”XYZ”
20 PRINT A,B,X$,A+B
30 PRINT A;B;X$;A+B

>RUN[Enter]
123 200 XYZ 323
123200XYZ323

パラメータをカンマ(,)で区切ると1文字の空白が挿入されます。
またセミコロン(;)で区切ると間をあけないで表示されます。

●PRINT文の最後にセミコロン(;)をつけると改行が行われません。
上の例で 20 PRINT A,B,X$,A+B; とすると結果は下のようになります。
>RUN[Enter]
123 200 XYZ 323123200XYZ323

●PRINTとだけ書いた場合には1行改行命令になります(下の20行)。

[使用例]
10 PRINT "ABC"
20 PRINT
30 PRINT "DEF"
>RUN[Enter]
ABC

DEF

RDATA #n,変数名

#nは#5〜#8です。
ROPENでオープンしたファイルからデータを変数に読み込みます。
WindowsアプリケーションのTeraPadやEXCELなどではデータ区切りの ,(カンマ)が命令の終わりにある場合と無い場合とで扱いが異なりますがRDATA文は , も改行コードも値と値との間のセパレータとしてしか認識しません。
RDATA文はGOTO文を使って繰り返して値を読み込むプログラムになります。
RDATA文では1個の変数しか記述できません。
最後の値を読んだあとファイルの終わりを知るためにEOF()の値を確認します。
使用例や使い方は[第9回]を参照してください。

READ

DATA文に書かれているデータを変数に読み込みます。
最初に実行されるREAD文は一番小さい行番号のDATA文のデータから読み込みを開始します。
READ文もDATA文も一つのプログラムに幾つ書いてもまた幾つの変数を割り当てても構いませんがREAD文の変数とDATA文の定数の型が異なっていたりDATA文のデータの数が不足するとエラーになります。
DATA文のデータの方が多い場合には残りのデータが無視されるだけでエラーにはなりません。
使用例はDATA文の項を参照して下さい(前回参照)。
DATA文の最初に戻って始めのデータから読みなおしたい時や途中から読み出したい時にはRESTOREを使います。

REM

プログラム中に実行されないコメントを書くのに使います。
このREMから行の終わりまでに書かれた文字は実行時には無視されます。
REMの代わりにアポストロフィ( ’ ) で代用することができます。

[使用例]
10 REM *** TEST PROGRAM ***
20 ’Good Morning!


RESTORE

READ文で読み込みを開始するDATA文を指定します。
READ文は小さい行番号のDATA文から読み取りを開始し順に読んで行きますが処理によってはもう一度前のDATA文に戻って読み取りたい場合や間をとばして先のDATA文を読みたい場合があります。
READ文に先立って読み取りを始めたいDATA文の行番号をRESTORE文で指定しておくことによって任意のDATA文から読み取りを開始することができます。
RESTOREの後に行番号を指定しない場合は一番小さい行番号のDATA文が指定されたことになります。

[使用例]
10 DATA ABC,XYZ,123
20 DATA 10,20,30
30 READ A$,B$
40 RESTORE 20
50 READ I,J
60 RESTORE
70 READ C$
80 PRINT A$,B$,C$,I,J
>RUN[Enter]
ABC  XYZ ABC 10 20

RESUME

ON ERROR GOTO文でエラー発生時の処理をしたあと次に実行する文を指定します。
RESUME のように後ろに何もつけない場合はエラーの発生した文から再実行します。
RESUME NEXT  と後ろにNEXTをつけるとエラーの発生した文の次の文から実行を開始します。
RESUME  50 のように後ろに行番号をつけるとその行から実行を開始します。

[使用例]
10 ON ERROR GOTO 100
20 INPUT A,B
30 PRINT A/B
40 GOTO 20
100 PRINT ”ERROR!”,ERL,ERC
110 RESUME NEXT
>RUN[Enter]
A?10[Enter]
B?0[Enter]
ERROR! 30 12
A?

RETURN

GOSUB文で指定したサブルーチンの終わりを示します。
RETURN文が実行されるとGOSUB文の次の文に戻って処理を続けます。
詳しくは、GOSUB〜RETURNの説明を参照して下さい(前回参照)。

ROPEN #n,ファイル名

ROPENはCSVファイルをREADファイルとしてオープンします。
nは5〜8の間の整数です。

STOP

プログラムの実行を中止してブレイクします。
このとき画面には次の表示が出ます。

Break  in LLLLL (LLLLL はSTOP文の書かれている行番号)

この後キーボードからCONTコマンドを入力すればこのSTOP文の次の文から実行を再開させることができます(ただしプログラムの最後にSTOP文が書かれていてそのSTOP文でブレイクした場合には実行を再開させることはできません)。

WDATA #n[,データ1,データ2…,]

#n(n=1〜4)で指定するファイルにデータを書き込みます。
#nは省略できませんがその後ろは省略可能です。
データは複数個記述することができます。
データを記述するときは#nとデータとの間およびデータ間を,(カンマ)で区切ります。
最後に , をつけない場合はそこに改行コード(0D0A)が書き込まれます。
最後を , で終るとそこに ,(コード2C)が書き込まれて終ります。
データを記述しないでWDATA #nだけの命令文を書くとそこに改行コード(0D0A)が書き込まれます。
使用例や使い方は[第7回]および[第8回]を参照してください。

WOPEN #n,ファイル名

WOPENはデータを書き込むファイルを新規オープンする命令です。
nは1〜4の範囲の整数です。
ファイルをオープンする命令はWOPENのほかにROPENがあります。
WOPENはWrite data file openです。
ROPENはRead data file openです。
ROPENはデータを読み出すファイルをOPENする命令です。
WOPENの#nは#1〜#4ですがROPENの#nは#5〜#8です。
WOPEN命令でファイル名をつけて新規ファイルをオープンします。
作成されるファイルは拡張子の指定に関わらず中身はCSVファイルとして作成されます。
CSVはComma Separated Valueの頭文字から取った名称で「値をカンマで区切る」ことから来ています。
その実体はテキストファイルですからメモ帳やTeraPadなどで開くことができます。
拡張子を「csv」にすることは必須ではありません。
「txt」でもよいですし拡張子なしでも構いません。
しかし拡張子をcsvにしたほうがアプリケーションから開きやすくなりますからとくに理由がない限り「csv」にしたほうがよいでしょう。
WOPENでオープンしていることを示すためにファイル番号#1〜#4で示します。
このファイル番号はデータを書き込むための命令WDATAと最後にファイルをクローズする命令CLOSEで使われます。
使用例や使い方は[第7回]および[第8回]を参照してください。

PIC−USBIO using BASIC[第191回]
2023.3.5upload

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