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


PIC−USBIO using BASIC

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

[第188回]



●PICUSBIO用BASIC説明書(3)BASICプログラムの作成・実行

今回はBASIC説明書の第3回です。
前回は第1章を書きました。
今回はその続き、第2章です。

2章  BASICプログラムの作成・実行

1. プログラムの作成

1.1 キーボードからの入力

下のように入力して下さい。
行の最後で[Enter]を押すことについては既に説明した通りです。
命令の意味についてはここでは説明しません。
この章ではまず基本的なプログラムの作成方法や実行方法について説明します。
入力ミスに気がついたときは、[Enter]を押す前ならばその場でカーソルを移動して修正できます。

>10 A=2[Enter]
>20 PRINT A[Enter]
>30 A=A+5[Enter]
>40 GOTO 20[Enter]
 

これである作業をするBASICプログラムが作成されました。
この例のようなある働きをする命令のまとまりをプログラムと言います(プログラムファイルとよぶ場合もあります)。
プログラムはTXTファイルとしてハードディスクに保存しておきあとからいつでも使うことができます。
BASICプログラムはこの例のように必ず行番号をつけます。
BASICプログラムを行番号をつけないで入力するとその命令はただちに実行されてしまいます。
行番号は1〜32767の整数でプログラムは入れた順番とは関係なく行番号の順に整理されます。
普通は上の例のように、10、20、30、と10番飛びに番号をつけます。
こうしておくと、(BASICプログラムは行番号の順に整理されるため)あとからの追加が楽にできます。
例えば上の例で行番号10と20の行の間にもう一行追加したくなったときは行番号を15にしてその行を書けば後から追加したその行番号15の行は行番号40の後ではなくて行番号10と行番号20の行の間に挿入されます(もしも行番号を1、2、3とつけておくと、その間に新しい行を挿入することができません。)。
AUTOコマンドを使用すると行番号をシステムが作成して表示するのでプログラム作成の能率が上がります(4章参照)。
RENコマンドで行番号を整理して付け直すことができます。

[注記]
このシステムのBASICではプログラムの終わりを示す命令(END文)は必要ありません。
また特に必要があって使う以外はSTOP文も書く必要はありません。
プログラムの最後にSTOP文が書いて無くても省略されているものとして正常に実行されます。

1.2 プログラムの確認

全部入力を終わったら本当に正しく入力できたかどうか確認してみます。
入力したプログラムを確認するにはLISTコマンドを使います。

>LIST[Enter]
    10 A=2
    20 PRINT A
    30 A=A+5
    40 GOTO 20
 

1.3 プログラムの実行

プログラムの入力が完了し正しく入力されていることを確認したらいよいよ実行してみます。
BASICプログラムを実行するにはRUNコマンドを使います。
このコマンドの入力によりRUNモードになりプログラムが実行されます。

>RUN[Enter]


12
17



上のように、2、7、12……と5ずつ増えた数が縦にどんどん表示されます。
この例と違う数字が表示されたり、エラーコードが表示された場合には入力したプログラムに誤りがあります。
もう一度LISTコマンドでプログラムを表示させてよく確認して下さい。
誤りがみつかったらこの章の「1.6 プログラムの修正」の説明に従って正しく直してからもう一度RUNコマンドを入力して下さい。

[参考]
この実行例で表示される数字がディスプレイ画面の一番下の行までくるとそのあとは画面全体が下から上に移動しながら一番下の行に新しい数字が表示されていきます。
これをスクロール(画面が一杯になったら画面を順に一行ずつ上に移動させ文字が画面の下にかくれてしまわないようにするコントロール方法)機能といいます。
BASICの表示はすべてスクロール表示になっています。
画面の上端から消えてしまった行は[PageUp]キーによって表示を戻すことができます(1章2.2参照)。

1.4 プログラムの中止([Ctrl]B)

前記のプログラムはどんどん数字を表示していくだけでどこまで行っても止まりません。
そこでとにかくもうこのへんで実行を中止したいという場合にプログラムをブレイクすると言います。
[Ctrl]Bを使います。
[Ctrl] を押しながら英字のBキーを押すとブレイクが受け付けられBASICプログラムの実行が中止されます。

break in 30(または20、40)

の表示が出てキー入力待ちの状態になります。
プログラムの実行が中断した状態ですがここでプログラムの修正をするとかその他の作業を自由に行うことができます。

[注記]
break in ×× の表示は、その××の行を実行中にブレイクしたことを示しています。

1.5 プログラムの実行再開

前項でブレイクしたあとその続きから実行を再開させることができます。
CONT[Enter]と入力してみて下さい。
再びプログラムの実行が開始されてさきほどの続きの数値から表示していきます。
CONTコマンドの入力前に変数の内容を確認したりその値を変更することもできます。
変数の内容を確認する例としてPRINT命令をダイレクトに実行させてみます。

>PRINT A[Enter]
112
 

さきほどブレイクした直前に表示されていた値かその次の値が表示されます(ここでは表示例として112にしています)。
次に変数の値を変更してみます。

>A=12345[Enter]
 

これで変数Aに12345がセットされました。
この状態でCONTコマンドを入力して実行を再開してみます。

>CONT[Enter]
12350
12355
12360
  ・
  ・

変更した値から表示されることが確認できます。
このようにBASICプログラムは実行中に任意の時点でプログラムの実行を中止しその時の変数の値を確認したりまた必要ならば変数の値を変更した後で再び中止した所から実行を再開させることができます。

[注意]
ブレイクした後でプログラムを修正した場合にはCONTコマンドで正しく実行が再開されない場合があります。
また修正によってはCONTコマンドの入力によってシステムが暴走してしまう可能性がありますからプログラム修正をしたあとでCONTコマンドを入力してはいけません。
プログラム修正をしたあとでもRUNコマンドではじめから実行を開始した後にブレイクしてそれからCONTコマンドを入力することは構いません。
またLISTコマンドでプログラムの内容を確認するだけならば問題はありません。
[ブレイク]→[プログラム修正]→[CONT]……不可
[ブレイク]→[プログラム修正]→[RUN]→[ブレイク]→[CONT]……可

1.6 プログラムの修正

まずプログラムを表示してみます。

>LIST[Enter]
    10 A=2
    20 PRINT A
    30 A=A+5
    40 GOTO 20
 

[↑]と[→]を使って、30 A=A+5 の+記号のところにカーソルをセットします。

    30 A=A

    30 A=A*5   +を*に変更します。そのあとここで[Enter]を押します。
   40 GOTO20   カーソルが次の行に移動して次の修正ができるようになります。

修正がもう必要ないときは[↓]を押してリストの終わりまでカーソルを移動します。
念のためにもう一度LIST[Enter]と入力してみて下さい。
+が*に変更されているはずです。
このように修正したい文をもう一度入れ直さなくても簡単に修正できるのがスクリーンエディタの特徴です。
なおよく注意してみると気がつくようにはじめ入力するときは行番号を>の次にすぐ入力し行番号と文との間をつめて入力してもLIST出力すると行番号は6字分を占めその次に必ず1字の空白がとられます。
その分だけ文全体が右に移動するためもし行一杯に文を書いた場合はLIST出力させると終わりの方が行からはみ出てしまいます。
はみ出た部分は下の行に表示されます(つまり2行に渡って表示されます)が実行にはさしつかえありません。
しかしこのようにして2行に渡って表示されている文に対して修正を行い[Enter]を押すと2行目の部分は無視されてしまいます。
したがって余り長い文を書かないように注意して下さい。

[注記]
ここではスクリーンエディタの特徴をはっきり出すため、LIST[Enter]でプログラム全体を表示させましたがこの例のようにある一行だけ(ここでは行番号30)修正すればよい場合にはLIST 30[Enter]と入力すればその一行だけ表示させることができます。
そうしておいてから必要な修正を行ったほうが、この場合は能率的です。

2. エラーコードとエラーメッセージ

2.1 エラーコード

前項で修正したプログラムをもう一度下のように修正してみます。

30 A=A/0

RUN[Enter]と入力すると、下のような表示が出て実行が中止されます。

>RUN[Enter]
error! erc=12
    30 A=A/0
 

このようにBASICインタプリタは実行中のエラーを教えてくれます。
これは行番号30の実行中に0で割る除算が実行されたことを示しています。
プログラムによっては実行中に様々なエラーが発生します。
そのような時にBASICインタプリタはそのエラーの原因をエラーコードで表示するとともにエラーが発生した行を表示してブレイクします。
エラーコードとその意味については9章で説明します。

2.2 エラーメッセージ

BASICプログラムの実行中以外にエラーが発生した場合にもそのエラーを知らせるメッセージが表示されます。
それらのメッセージについてはそれぞれの機能やコマンドの項で説明してありますからそれを参照して下さい。

3.省略

4. スペースについて

BASICプログラムの作成をする場合に、命令と変数等との区切にはスペースが必要です。
例えば、10 PRINT A を、10 PRINTA と入力するとエラーになります(PRINTAという変数名として受け取られてしまいます)。
別の例で、IF A=B THEN PRINT A という文でA=Bのように記号と変数、数値の間にはスペースは必要ありません。
その他の部分のスペースを省略すると命令と変数名がつながって区別できなくなるため省略はできません。
また逆に各単語のつづりの中にスペースを入れることは許されません。
例えば、10 P R INT A はエラーになります。
なお単語の区切としてのスペースは2桁以上続けて使用してもLIST出力時にはカットされて1桁のスペースしか表示されません。
ただし、REM文や” ”の中、またはDATA文の文字データのスペースはカットされずにもとのまま残ります。

5. プログラムの復活

BASICで書かれたプログラムはNEWコマンドを実行することにより消去されます。
うっかりNEWコマンドを実行したために消えてしまったBASICプログラムはHELPコマンドで復活させることができます。
この章で作成したプログラムがまだ残っていることをLISTコマンドで確認してからNEW[Enter]と入力してみてください。
次にLISTコマンドを入力してもプログラムは1行も表示されません。
そこで今度はHELPコマンドを入力してみます。

>HELP[Enter]
 

そのあとLISTコマンドを入力すると消えたはずのプログラムが元通り表示されます。
[注意1]
[Ctrl]Cや/EXITでBASICを終了した後ではBASICプログラムを元に戻すことはできません。
[注意2]
この機能はNEWコマンドによって仮にクリアされたプログラムを復活させるもので、プログラムの上書き、変更によって書き換えた場合には元に戻すことはできません。
操作ミスなどに備えて作成中のプログラムはできるだけこまめにハードディスクに保存してください(/SAVEコマンドでファイル名をつけてプログラムをハードディスクに保存することができます)。

6. プログラムの消去

現在メモリに記憶されているプログラムを全部消したいときはNEWコマンドを使います。
またある行だけを消したいときはその行番号のみを入力すれば消去できます。

    10 A=A+1
    20 PRINT A
    30 GOTO 60
    40 PRINT B

例えば上のようなプログラムのうち行番号30の行を消したいときは下のようにその行番号(ここでは30)だけを入力します。

>30
        これで、30の行は消去されています。             

またある範囲のプログラムを消したい場合にはDELETEコマンドを使います。

>DELETE 100−150[Enter]

この場合には行番号100〜150の間のプログラムが削除されます。

7. プログラムの保存(ファイルの作成)

BASICプログラムはファイル名をつけてテキストファイル形式で保存することができます。
/SAVEコマンドを使います。

[書式]/SAVE ファイルネーム

ファイル名のみを指定した場合にはBASICインタプリタが存在するフォルダにSAVEされます。
同じファイル名があると下のように表示されます。

test.txt already exists.overwrite ok? y or else

上書きしてよければy[enter]を/SAVEを中止する場合にはその他の文字を入力します。

ファイル名にドライブ名やフォルダ名を含めて記述することで別のドライブやディレクトリにSAVEすることができます(使用例B)。
ファイル名は現在のコマンドプロンプトで許されるかなり長い名前まで使えますが当社のND80Z3.5などのZB3BASICとの互換性を考えるのでしたら名前部分が英数字及び、−_で8字以内、拡張子は3字以内にしてください。
拡張子はTXTである必要はありません。
またつけなくても構いません。
ハードディスクにはテキストイメージで保存されます。
Notepad(メモ帳)などのテキストエディタで参照したり、修正、追加、削除などができます。
またプリンタに出力することもできます。
/SAVEコマンドではBASICシステムによって1行ずつBASIC内部コードをテキスト形式に変換してSAVEされます。

[使用例@]
>/SAVE TEST.TXT[Enter]
[使用例A]
>/SAVE MIHON[Enter]   ………拡張子はなくてもよい。
[使用例B]
>/SAVE D:¥BASIC¥TESTPRO.TXT[Enter]
[注記1]
使用例Bのように別のドライブや別のフォルダにSAVEすることもできます(上の@A例ではBASICの存在するフォルダにSAVEされます)。
[注記2]
使用例Aのように拡張子をつけないで保存してもBASICでの作業には支障ありません。
Windowsではフォルダ内の表示をしたときにテキストファイルのアイコンがつかないため整理がしにくいかもしれないこととアプリケーションから開くことしかできない欠点があります。

8. プログラムの読み込み(テキストファイルのLOAD)

テキスト形式で保存されたファイルをBASICプログラムとして読み込むことができます。
/LOADコマンドを使います。

[書式]/LOAD ファイルネーム

ファイル名のみを指定した場合にはBASICが存在するフォルダからLOADします。
ファイルがみつからないときは xxx(ファイル名) cannot open  と表示されます。
ファイル名にドライブ名やフォルダ名を含めて記述することで別のドライブやフォルダにあるファイルをLOADすることができます(使用例B)。
/LOADコマンドでテキスト形式のファイルが読み込まれたあと、BASICで実行可能な内部形式にコンバートされます。
メモ帳などのテキストエディタで作成したプログラムも文法的に正しければ/SAVEで保存されたファイルと同じようにLOADすることができます。

[注意1]
LOADコマンドの動作は NEW + /LOAD というように必ずNEWコマンドの動作を伴っています(LOAD前に存在したプログラムは失われます)。
[注意2]
メモ帳(Notepad)は問題ありませんがWriteやWordでは通常はそれぞれの形式でファイルが作成されます。
保存するときにテキスト形式を指定してもゴミが混じる場合があります。
Writeなどで作成したファイルがうまくLOADできないときは一度メモ帳(Notepad)で開いてゴミを削除してメモ帳で保存してからLOADしてみてください。

[使用例@]
>/LOAD TEST.TXT[Enter]
[使用例A]
>/LOAD MIHON[Enter]   ………テキスト形式のファイルなら拡張子のついていないファイルでもよい
[使用例B]
>/LOAD D:¥BASIC¥TESTPRO.BAS[Enter]
この例のように別のドライブや別のフォルダにあるファイルをLOADすることもできます。
[注意]
テキスト形式(拡張子の種類に関わらず内容がテキスト形式になっている)以外のファイルをLOADするとBASICシステムが暴走してハングアップすることがあります。

9. BASICの終了

BASICを終了する場合には/EXITコマンドを実行します。

>/EXIT[Enter]
リモート接続を終了しました
logfile closed at Fri Feb 24 22:23:37 2023
[注意]
[Ctrl]Cによって強制終了するとログファイルは完全には保存されません。

PIC−USBIO using BASIC[第188回]
2023.2.24upload

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