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


PIC−USBIO using BASIC

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

[第16回]



●STR$、VAL、CHR$、ASC、HEX$、BI$

前回に引き続いて文字列がらみの関数の説明です。
STR$、VAL、CHR$、ASCは一般的なBASICには普通に用意されている関数です。
このあたりの関数も前回と同様、当初はPIC−USBIO用のBASICにそんなものは要らんだろうと思っていたのですが、結局作ってしまいました。
書式としては一般的なBASICと同じです。
HEX$、BI$はZB3BASICにある関数ですが一般的なBASICにはない特殊な関数です。
下が使用例です。


STR$(n)

計算型の数値を文字型の数値に変換します。
” ”で囲わない数字列はそのままでは文字型の変数に代入することはできません。
STR$()関数は数値を文字型の数列に変換します。
nには数値のほか数値型の変数や配列、それらを含む計算式を置くことができます。
上例の10〜40がその使用例です。
10で数値型の変数aに数値の12345を入れます。
20でそれをSTR$(a)で文字型に変換して文字型の変数a$に入れます。
30ではa$の前後にCHR$()で1文字を追加してその文字列を文字型の変数b$に入れます。
CHR$()は0〜255の数を文字コードとみなしてそのコードに対応する文字に変換します。
CHR$()についてはあとで説明をします。
最後の40で各変数の値をPRINT文で表示します。
10〜40を実行した結果が上の画面の下から2行目に表示されています。
PRINT文の表示ではaもa$もどちらも同じ12345で区別できませんが、a$は文字型ですから30行のように文字型として他の文字型と合体させることができます。
30行ではCHR$()で$41と$42を文字に変換しています。
PIC−USBIO用のBASICでは1バイトの16進数を示すのに2桁の数値(16進数)の前に’$’をつけて示します。
$41は文字Aの文字コードです。
$42は文字Bの文字コードです。

VAL(数字文字列)

VAL()はSTR$()と逆の働きをする関数です。
()の中には数字だけからなる文字列を置きます。
値が数字だけの文字列であれば文字変数を置くこともできます。
VAL()は数字文字列をそのまま計算型の数字列に変換します。
20行では数値の12345を文字列の”12345”に置き換えてa$に入れました。
50行ではそのa$をVAL()でもとの数値に変換しています。
70行でPRINT文でその結果を表示します。

ASC(文字列)

CHR$()と逆の働きをする関数です。
文字列の先頭の1文字のASCIIコードがASC()の値になります。
()内の文字列として” ”で囲んだ文字列のほか文字変数も置くことができます。
60行でa$の値(”12345”)の先頭1文字の文字コード(ASCIIコード)を変数cに入れます。
文字”1”の文字コード(ASCIIコード)は16進数の31(十進数の49)ですからその値が変数cに入ります。
上の画面の最後の行に70行のPRINT文の実行結果が表示されています。

HEX$(n)

HEX$()はPRINT文の中だけで使える特殊な関数です。
nには0〜255の範囲の整数値かその値をもつ変数、配列かその値になる数式が入ります。
HEX$()は0〜255の範囲の数を00〜FFの範囲の16進数に変換します。
70行のPRINT文で普通に変数cの値を表示すると十進数表示になりますから49と表示されます。
HEX$(c)をPRINT文の中で使うと十進数の49の16進数31が表示されます。

BI$(n)

BI$()もPRINT文の中だけで使える特殊な関数です。
nには0〜255の範囲の整数値かその値をもつ変数、配列かその値になる数式が入ります。
BI$()は0〜255(16進数の00〜FF)を8ビットのビット列に変換します。
70行のPRINT文でBI$(c)を使っています。
cの値は16進数では$31です。
そのビット表現は00110001です。
上の画面の最後の行に70行のPRINT文の実行結果が表示されています。

CHR$(n)

STR$は1桁以上の数値を文字型に変換しますが、それに対してCHR$は0〜255の範囲の数値を文字コードとみなしてそのコードに対応する1桁の文字に変換します。
上の例ではCHR$()に文字コード$41と$42を使いました。
下はCHR$()に0〜255($00〜$FF)の範囲の数を順に入れてそれをPRINT文で画面に表示したプログラム例です。

ASCIIコードの20〜7Fには半角文字の英数記号が割り当てられています。
日本語用の環境では一般的にコードA0〜DFには半角カナ記号が割り当てられています。
しかしそれ以外のコード(00〜1F、80〜9F、E0〜FF)にはシステムによってそれぞれ固有の文字か機能が割り当てられています。
日本語全角文字が使える環境では81〜9F、E0〜EFには日本語の全角文字コード(2バイト)の上位1バイトが割り当てられます。
PIC−USBIO用のBASICでは文字コードとしては20〜7Fしか使用しません。
そのほか画面制御コードとして08(BS)、0A(LF)、0D(CR)を使います。
それ以外のコードをCHR$()に入れてそれをPRINT文で表示させるとシステムによっては異常が発生する可能性がありますから注意してください。
上の画面はWindows7で実行しました。
上のプログラムを実行するとピッと音がしました。
確認してみたところASCIIコードの07にはBELL(ビープ音)が割り当てられていました。
これは何かに利用できそうですね。

PIC−USBIO using BASIC[第16回]
2022.6.27upload

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