PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第194回]
●PICUSBIO用BASIC説明書(9)BASIC関数・システム変数
BASIC説明書の続きです。
今回はBASIC関数とシステム変数です。
6章 BASIC関数・システム変数
関数はいままで説明してきたコマンドや命令(ステートメント)とは少し性質が異なっています。
関数は命令(ステートメント)のようにBASIC文の中で単独で使うことはできずLET文やPRINT文の中である値を持つ数値として扱われます。
関数は( )の中に記述するパラメータをもとにしてそれぞれの処理をした結果をその関数の値として持ちますがシステム変数はパラメータが不要である特定の値をシステムが与えます。
ABS
[書式]ABS(a)
絶対値を計算します。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できます。
[使用例]
10 A=ABS(B*C−10)
AND
[書式]AND(a,b)
8ビットの2数の論理積(AND)を計算します。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますがその値は0〜255の範囲の整数でなければ正しい結果は得られません。
またこのAND関数の取りうる値の範囲も0〜255($00〜$FF)です。
[使用例]
10 A=$37
20 B=AND(A,$0F)
30 PRINT HEX$(A),BI$(A)
40 PRINT HEX$(B),BI$(B)
>RUN[Enter]
37 00110111
07 00000111
ASC
[書式]ASC(a)
文字列の最初の1文字のキャラクタコードを与えます。
( )の中には文字定数、文字変数が記述できます。
[使用例]
10 INPUT A$
20 CD=ASC(A$):PRINT HEX$(CD),
30 IF ($30<=CD)*(CD<=$39) THEN PRINT ”NUMERIC” ELSE PRINT ”ALPHA”
40 GOTO 10
>RUN[Enter]
A$?12345[Enter]
31 NUMERIC
A$?ABC[Enter]
41 ALPHA
A$?
BI$
[書式]BI$(a)
8ビットの数をビット表現の文字列にします。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますがその値は0〜255の範囲の整数でなければ正しい結果は得られません。
[使用例]
10 A=$37
20 B=AND(A,$0F)
30 PRINT HEX$(A),BI$(A)
40 PRINT HEX$(B),BI$(B)
>RUN[Enter]
37 00110111
07 00000111
BIT
[書式]BIT(a,n)
8ビットの数の任意のビットを調べそのビットが0のときにこの関数の値が0になり1のときこの関数の値が1になります。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますが、その値は第1パラメータは0〜255、第2パラメータは0〜7の範囲の整数でなければ正しい結果は得られません。
BIT関数の値は、0か1の2値のみです。
この関数はI/Oポートからの入力データの特定のビットの状態を知りたい時などに使うと便利です。
下の例はI/OのAポートのビット7にLレベルの信号が入力された時に、”DATA IN”と表示させるプログラムです。
[使用例]
10 OUT $83,$90
20 A=IN($80)
30 IF BIT(A,7)=0 THEN PRINT ”DATA IN”
40 GOTO 20
CHR$
[書式]CHR$(a)
8ビットのデータをキャラクタコードとみなしてそのコードに対応する1桁の文字を発生します。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますがその値は0〜255の範囲の整数でなければ正しい結果は得られません。
[使用例]
10 A$=CHR$(41)+CHR$(42)+CHR$(43)
20 PRINT A$
>RUN[Enter]
ABC
DATE$
現在の日付(年、月、日)を持つシステム変数です。
DATE$は8桁の文字型変数でYY/MM/DDの形をしています。
YYは00〜99、MMは01〜12、DDは01〜31の範囲の整数です。
DATE$はWindowsシステムの日付データを引用しています。
この値はPRINT文やLET文などで常時参照することができます。
DATE$は読み取り専用です。
DATE$に値を書き込むことはできません。
[使用例]
10 PRINT DATE$
>RUN
03/02/15
DATE2$
現在の日付(年、月、日)を持つシステム変数です。
DATE2$は6桁の文字型変数でYYMMDDの形をしています。
YYは00〜99、MMは01〜12、DDは01〜31の範囲の整数です。
DATE2$はWindowsシステムの日付データを引用しています。
この値はPRINT文やLET文などで常時参照することができます。
DATE2$は読み取り専用です。
DATE2$に値を書き込むことはできません。
[使用例]
10 PRINT DATE$,DATE2$
>RUN
03/02/15 030215
EOF(n)
データをファイルから読み込むときにROPEN命令とともに使います。
nは5〜8の整数です。
ROPENでオープンしたファイルのデータを読み込んだあとファイルエンドになったらEOF(n)の値が1になります。
まだデータが残っている間はEOF(n)の値は0です。
ERL
ERC
BASICの実行中にエラーが発生した時ERCにそのエラーコードがセットされERLにはエラーが発生した行番号がセットされます。
この値はIF文などで数値データとして参照可能です。
[使用例]
10 ON ERROR GOTO 100
20 INPUT A,B
30 PRINT A/B
40 GOTO 20
100 PRINT ”ERROR!LINE=”;ERL,”CODE=”;ERC
110 RESUME NEXT
RUN[Enter]
A?10[Enter]
B?0[Enter]
ERROR!LINE=30 CODE=12
A?
HEX$
[書式]HEX$(a)
aの値を16進数化してその文字列を与えます。
( )の中には、定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますがaの値は0〜255の範囲の整数に限ります。
[使用例]
10 A=123
20 PRINT A,HEX$(A)
>RUN[Enter]
123 7B
IN
[書式]IN(a)
I/OポートのI/Oアドレスから8ビットのデータを入力します。
OUT命令の反対の働きをします。
( )の中にはアドレスとして定数、変数、配列、数式、関数(いずれも文字型を除く)が記述できますがその値は0〜255の範囲の整数に限ります。
PICUSBIOに特化したBASICなのでこのIN関数はPICUSBIOボードのI/O回路に対するアクセスに限定した機能になっています。
アドレスとして$04よりも大きい値を指定しても上位ビットは無視されてアドレス0〜3として働きます。
[使用例]
10 ABCIN=IN($80)
この場合I/Oアドレスは0として認識されPICUSBIO−01ボードの場合ボード上の82C55のAポートからの入力データがABCINに入ります。
説明が長くなりますので説明の途中ですが今回はここまでにします。
この続きは次回にいたします。
PIC−USBIO using BASIC[第194回]
2023.3.11upload
前へ
次へ
ホームページトップへ戻る