
■ BASCOM-AVR (DEMO) の使用方法 ■ |
I/O、メモリー、DATA行 関連の命令 |
● I/Oポートに関する命令です。 |
CONFIG PORT |
入出力(I/O)ポートの、データ方向を設定します。 |
SET |
出力ポートまたは数値変数の、指定されたピン(ビット)をセット(1)します。 |
RESET |
出力ポートまたは数値変数の、指定されたピン(ビット)をリセット(0)します。 |
TOGGLE |
出力ポートまたは数値変数の、指定されたピン(ビット)を反転します。 |
BITS |
出力ポートまたはバイト型変数に、指定されたビットを1にした数値を入れます。 |
NBITS |
出力ポートまたはバイト型変数に、指定されたビットを0にした数値を入れます。 |
BITWAIT |
指定したポートピンが、ハイレベル(1)またはローレベル(0)になるまで待ちます。 |
PULSEIN |
指定したポートピンに入力されたパルスを検出し、その間隔(時間)を変数に入れます。 |
PULSEOUT |
指定したポートピンに、任意の幅のパルスを発生させます。 |
SOUND |
指定したポートピンに、任意の間隔で任意の期間の、方形波を発生させます。 |
SHIFTIN |
I/Oポートを利用して、クロック同期のシリアルデータを入力します。 |
CONFIG
SHIFTIN |
SHIFTIN命令が、新しいモードで動作するようにコンパイラーに指示します。 |
SHIFTOUT |
I/Oポートを利用して、クロック同期のシリアルデータを出力します。 |
ALIAS |
ポート名などの、割り当て先が決まっている固有名を、別の名前で参照します。 |
● ポートピンのスイッチや、キーボードに関する命令です。 |
DEBOUNCE |
ポートピンのスイッチを検出し、チャタリング対策の遅延後、指定ラベルへ分岐します。 |
CONFIG
DEBOUNCE |
DEBOUNCE命令で使用される、スイッチのチャタリング防止の遅延時間を設定します。 |
CONFIG KBD |
キースイッチを、マトリックス(格子)状に接続した回路の、構成を設定します。 |
GETKBD |
キースイッチを、マトリックス(格子)状に接続した回路の、キー入力を検出します。 |
CONFIG
KEYBOARD |
PS/2(AT)キーボードを、ポートに接続する場合の、構成を設定します。 |
GETATKBD |
PS/2(AT)キーボードから、キーデータを入力します |
GETATKBDRAW |
PS/2(AT)キーボードから、ASCIIコードに変換前の、キー・スキャンコードを取得します。 |
● メモリーへのアクセスに関する命令です。 |
READEEPROM |
EEPROMからデータを読み込み、変数に入れます。 |
WRITEEEPROM |
EEPROMへ、変数のデータを書き込みます。 |
INP |
AVRのレジスターやSRAM、およびXRAMのメモリー内容を、変数に読み込みます。 |
OUT |
AVRのレジスターやSRAM、およびXRAMのメモリーに、データを書き込みます。 |
PEEK |
AVRのレジスター・ファイルの内容を、変数に読み込みます。 |
POKE |
AVRのレジスター・ファイルに、データを書き込みます。 |
CPEEK |
コード・メモリー(プログラム用フラッシュ・メモリー)の内容を、変数に読み込みます。 |
CPEEKH |
mega103・128のLPM命令による、上位バンクのメモリー内容を、変数に読み込みます。 |
VARPTR |
変数が割り当てられているメモリー・アドレスを、変数に入れます。 |
LOADADR |
変数が割り当てられているアドレスを、ペアレジスタにロードします。 (アセンブラ支援命令) |
LOADLABEL |
ラベルが割り当てられているメモリー・アドレスを、変数に入れます。 |
MEMCOPY |
変数が割り当てられているメモリー内容を、ブロック・コピーします。 |
MEMFILL |
メモリーの任意の範囲を指定した値で埋めます。 |
SIZEOF |
変数のメモリー上のサイズを調べます。 (バイト数で返します) |
CONFIG XRAM |
外部メモリー(XRAM)へのアクセス状態と、ウェイト・ステートを設定します。 |
● DATA行に関する命令です。 |
DATA |
あらかじめ用意された複数のデータ値を、プログラムに記述します。 |
RESTORE |
READ命令でデータを読み込む際に、DATA行の読み込みを開始する位置を指定します。 |
READ |
DATA行からデータを読み込み、変数に入れます。 |
LOOKUP |
指定したDATA行の先頭から、任意の位置にある数値データを、変数に読み込みます。 |
LOOKUPSTR |
指定したDATA行の先頭から、任意の位置にある文字データを、変数に読み込みます。 |
LOOKDOWN |
指定したDATA行の中から、数値データを検索し、先頭からの位置を変数に入れます。 |
CONFIG PORT |
一覧へ戻る |
入出力(I/O)ポートの、データ方向を設定します。
書式 |
Config PORTX = direction
Config PINX.b = direction
Config PORTX.b = direction (ヘルプには未記載ですが、これも可能です) |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号。 ( 0 〜 7 ) |
|
direction = |
Input
Output
数値定数 |
− 入力に設定。
− 出力に設定。
− 数値定数により設定。 ( 0 = 入力 , 1 = 出力 ) |
|
・1つのポート名に、入力と出力が混在する場合は、数値定数を使用します。
・ピン単位で、入出力を設定する場合は、Config PIN命令を使用します。
・入出力(I/O)ポートの使用方法は、こちらを参照して下さい。
入出力(I/O)ポートの使用方法
|
(例) |
|
Config PORTA = Input |
' ポートAをすべて入力ポートに設定します。 |
Config PORTB = Output |
' ポートBをすべて出力ポートに設定します。 |
Config PORTC = &B00001111 |
' ポートCのPin0〜3を出力、Pin4〜7を入力に
設定します。 |
' |
' |
Config PIND.3 = Output |
' ポートDのPin3を出力に設定します。 |
|
|
SET |
一覧へ戻る |
出力ポートまたは数値変数の、指定されたピン(ビット)をセット(1)します。
書式 |
Set PORTX.b
Set varBit
Set variable.vb
|
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
|
varBit = |
ビット型変数。 |
variable = |
数値変数。 (バイト、ワード、インテジャー、ロング型) |
vb = |
ビットの番号または数値変数。 (0〜7) , (0〜15) , (0〜31) |
|
|
(例) |
|
Set PORTC.1 |
' ポートCのピン1をハイレベル(1)にします。 |
' |
' |
Dim B As Byte |
' 使用する変数を宣言。 |
B = 2 |
' テスト用の数値を代入。 |
Set PORTC.B |
' ポートCのピン2をハイレベル(1)にします。 |
|
|
RESET |
一覧へ戻る |
出力ポートまたは数値変数の、指定されたピン(ビット)をリセット(0)します。
書式 |
Reset PORTX.b
Reset varBit
Reset variable.vb
Reset Watchdog
|
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
|
varBit = |
ビット型変数。 |
variable = |
数値変数。 (バイト、ワード、インテジャー、ロング型) |
vb = |
ビットの番号または数値変数。 (0〜7) , (0〜15) , (0〜31) |
|
Watchdog = |
ウォッチドッグ タイマーの再スタート。 |
|
|
(例) |
|
Reset PORTC.1 |
' ポートCのピン1をローレベル(0)にします。 |
' |
' |
Dim B As Byte |
' 使用する変数を宣言。 |
B = 2 |
' テスト用の数値を代入。 |
Reset PORTC.B |
' ポートCのピン2をローレベル(0)にします。 |
|
|
TOGGLE |
一覧へ戻る |
出力ポートまたは数値変数の、指定されたピン(ビット)を反転します。
書式 |
Toggle PORTX.b
Toggle varBit
Toggle variable.vb
|
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
|
varBit = |
ビット型変数。 |
variable = |
数値変数。 (バイト、ワード、インテジャー、ロング型) |
vb = |
ビットの番号または数値変数。 (0〜7) , (0〜15) , (0〜31) |
|
|
(例) |
|
Toggle PORTC.1 |
' ポートCピン1の状態を反転します。 |
|
|
BITS |
一覧へ戻る |
出力ポートまたはバイト型変数に、指定されたビットを1にした数値を入れます。
書式 |
PORTX = Bits(bn , bn , ・・・)
variable = Bits(bn , bn , ・・・) |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
bn = |
1にするピンの番号。 ( 0 〜 7 ) |
|
variable = |
バイト型変数。 |
bn = |
1にするビットの番号。 ( 0 〜 7 ) |
|
・&B(2進表記)や、&H(16進表記)でも、同様に設定や代入ができますが、
ビットを10進数でわかりやすくセットできる命令です。
・BITS命令が使用できる変数は、バイト型のみです。
|
(例) |
|
Config PORTC = Output |
' ポートCを出力に設定。 |
' |
' |
PORTC = &B10000010 |
' ポートCへ出力。 |
PORTC = &H82 |
' 上記と同じ動作です。 |
PORTC = Bits(1 , 7) |
' 上記と同じ動作です。 |
|
|
NBITS |
一覧へ戻る |
出力ポートまたはバイト型変数に、指定されたビットを0にした数値を入れます。
書式 |
PORTX = Nbits(bn , bn , ・・・)
variable = Nbits(bn , bn , ・・・) |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
bn = |
0にするピンの番号。 ( 0 〜 7 ) |
|
variable = |
バイト型変数。 |
bn = |
0にするビットの番号。 ( 0 〜 7 ) |
|
・&B(2進表記)や、&H(16進表記)でも、同様に設定や代入ができますが、
ビットを10進数でわかりやすくリセットできる命令です。
・NBITS命令が使用できる変数は、バイト型のみです。
|
(例) | |
Config PORTC = Output |
' ポートCを出力に設定。 |
' |
' |
PORTC = &B01111101 |
' ポートCへ出力。 |
PORTC = &H7D |
' 上記と同じ動作です。 |
PORTC = Nbits(1 , 7) |
' 上記と同じ動作です。 |
|
|
BITWAIT |
一覧へ戻る |
指定したポートピンが、ハイレベル(1)またはローレベル(0)になるまで待ちます。
書式 |
Bitwait PINX.b , state |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
|
state = |
Set
Reset |
− ハイレベル(1)になるまで待つ。
− ローレベル(0)になるまで待つ。 |
|
|
(例) |
|
Bitwait PINC.7 , Reset |
' ポートCのピン7がローレベル(0)になるまで待ちます。 |
|
|
PULSEIN |
一覧へ戻る |
指定したポートピンに入力されたパルスを検出し、その間隔(時間)を変数に入れます。
書式 |
Pulsein variable , PINX , b , edge |
注釈 |
variable = |
間隔(時間)を入れる、ワード型変数。 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
edge = |
パルスの極性。 (0 = H→L 立ち下がり , 1 = L→H 立ち上がり) |
|
・この命令の前に、パルスを検出するポートピンは、入力に設定しておく必要があります。
・指定したパルスのエッジが検出されるまで、待ち続けます。
・検出のタイミングを正確にするために、BITWAIT命令と組み合わせるのも良い方法です。
・内部のカウンターが、65535を越えるとタイムアウトになり、内部変数ERRに1が代入
されてこの命令の処理が中断されます。
・ハードウエア・タイマーは使用していないので、精度は不明です。
・パルス幅は、AVRのクロック周波数にかかわらず、variableの変数値の1カウントが、
10μSに設定されています。
|
(例) |
|
Dim T As Word |
' 使用する変数を宣言。 |
Config PINC.7 = Input |
' ポートCピン7を入力に設定。 |
Do |
' 繰り返しループ。 |
Bitwait PINC.7 , Reset |
' ポートCのピン7がローレベル(0)になるまで待つ。 |
Pulsein T , PINC , 7 , 1 |
' 立ち上がりエッジを検出し、パルス幅を計測。 |
Print T |
' 結果を出力。 |
Waitms 100 |
' 100mSのウエイト。 |
Loop |
' |
|
|
PULSEOUT |
一覧へ戻る |
指定したポートピンに、任意の幅のパルスを発生させます。
書式 |
Pulseout PORTX , b , period |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
period = |
パルス幅。 ( 1 〜 65535 ) |
|
・この命令の前に、パルスを出力するポートピンは、出力に設定しておく必要があります。
・パルスの発生は、指定のピンを2回反転することで行われるので、ピンの初期状態により
パルスの極性が決定されます。
(ピンの初期状態がL(0)ならば正極性、H(1)ならば負極性)
・ハードウエア・タイマーは使用していないので、精度は不明です。
・パルス幅は、AVRのクロックが4MHzの時に、period値の1カウントが、1μSに設定
されています。 (12.8MHzでは、1カウントが、0.3125μSです)
|
(例) |
|
Config PORTC = Output |
' ポートCを出力に設定。 |
Reset PORTC.7 |
' ポートCのピン7をL(0)に設定。 |
Do |
' 繰り返しループ。 |
Pulseout PORTC , 7 , 3200 |
' クロック12.8MHzで、1mSのパルスを発生。 |
Waitms 10 |
' 10mSのウエイト。 |
Loop |
' |
|
|
SOUND |
一覧へ戻る |
指定したポートピンに、任意の間隔で任意の期間の、方形波を発生させます。
書式 |
Sound PORTX.b , duration , period |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
|
duration = |
出力する期間の、定数または数値変数。
( 1 〜 65535 ) (バイト、ワード、インテジャー型) |
|
period = |
パルス幅の、定数または数値変数。
( 1 〜 65535 ) (バイト、ワード、インテジャー型) |
|
・指定したポートピンに、圧電スピーカーやアンプ+スピーカーを接続すると、音を出すことが
できます。
・方形波の発生は、正極性のみです。 (出力が無い時は、L(0)レベルになります)
・ハードウエア・タイマーは使用していないので、精度は不明です。
・パルス幅の定数は、大まかに下記の式で計算できます。
(AVRのクロック周波数によって、かなりの誤差が出ますので、目安として下さい)
|
period = AVRクロック周波数 ÷ (発振周波数 × 12) |
|
AVRクロック周波数が12.8MHzで、1KHzの方形波を出す場合、
1066 = 12800000/(1000*12)
・出力する期間の定数は、大まかに下記の式で計算できます。
(AVRのクロック周波数によって、かなりの誤差が出ますので、目安として下さい)
|
duration = 出力する期間 × 発振周波数 |
|
1KHzの方形波を100mS間出す場合、100 = 0.1*1000
|
(例)ポートCピン0に、1秒間隔で、 1KHzの方形波を100mS間出力する。 |
Do |
' 繰り返しループ。 |
Sound PORTC.0 , 100 , 1066 |
' 1KHzの方形波を100mS出す。 |
Wait 1 |
' 1秒のウエイト。 |
Loop |
' |
|
|
SHIFTIN |
一覧へ戻る |
I/Oポートを利用して、クロック同期のシリアルデータを入力します。
書式 |
Shiftin PINX.b , clock , variable , mode [, bits , width ] |
注釈 |
PINX.b = |
データを入力するポートピンの名前。
( A , B , C , D , E , F ) ( 0 〜 7 ) |
|
clock = |
PORTX.b
PINX.b |
- 内部クロック同期。
- 外部クロック同期。 |
クロック用のポートピンの名前。
( A , B , C , D , E , F )
( 0 〜 7 ) |
|
variable = |
入力したデータを入れる変数名。 |
mode = |
入力ビット方向と、クロックのエッジ。 ( 0 〜 7 )
(下記別表を参照) |
|
bits = |
入力するビット数。 (オプション) ( 1 〜 255) |
width = |
クロック幅。 (width+@ μS 動作クロックに影響)
(オプション) |
|
mode入力ビット方向と、クロックのエッジの別表。
|
クロックの選択とエッジ |
データ入力方向 |
0 |
内部クロック・立ち下がり |
MSBからLSB |
1 |
内部クロック・立ち上がり |
MSBからLSB |
2 |
内部クロック・立ち下がり |
LSBからMSB |
3 |
内部クロック・立ち上がり |
LSBからMSB |
|
|
クロックの選択とエッジ |
データ入力方向 |
4 |
外部クロック・立ち上がり |
MSBからLSB |
5 |
外部クロック・立ち下がり |
MSBからLSB |
6 |
外部クロック・立ち上がり |
LSBからMSB |
7 |
外部クロック・立ち下がり |
LSBからMSB |
|

|
AVRクロック8MHz(125nS)での実測値
width |
Tw1(uS) |
Tw2(uS) |
Tsampl (uS) |
なし |
1.0 |
0.87 |
0.5 |
1 |
2.0 |
1.87 |
1.5 |
2 |
3.0 |
2.87 |
2.5 |
3 |
4.0 |
3.87 |
3.5 |
: |
: |
: |
: |
|
・Tw1はデフォルト(widthなし)で、AVR動作クロックの8クロック分です。
・Tw2はデフォルト(widthなし)で、AVR動作クロックの7クロック分です。
・width値により、1μSずつ広げることができます。
・データは、クロックのエッジから4クロック後にサンプリングされます。(Tsampl)
(width値により、1μSずつ後に遅れます)
・変数の型により、入力されるビット数は変わります。 (BYTE型:8ビット、WORD型:
16ビット など)
オプションのビット数を指定した場合は、その値が優先されます。
・bitsは使用せずに、widthオプションのみを使用したい場合は、bits位置に
(NULL)を記述します。
・クロックは、内部または外部同期のどちらでも使用可能で、エッジも選択可能です。
注意
・入力するビット数を、8,16,32・・・などのバイト単位以外に設定した場合、最上位
または最下位バイトの内容が、端数ビット分しかシフトされませんので、SHIFTIN命令の
後でデータを修正する必要があります。
・また、端数ビット以外の部分は内容が不確定となりますので、必ずマスクして下さい。
(例)
12ビットデータをLSBからMSBで受信した場合、下位バイトは正常ですが上位バイトの
上位4ビットにデータが入っていますので、上位バイトのみを右へ4ビットSHIFTして下さい。
|
Shiftin Pinb.0 , Portb.1 , Rxdata ,
3 , 12 |
' 12ビットデータをLSBからMSBで受信。 |
Temp1 = Low(rxdata) |
' ワード変数から下位バイトを取り出す。 |
Temp2 = High(rxdata) |
' ワード変数から上位バイトを取り出す。 |
Shift Temp2 , Right , 4 |
' 上位バイトを右へ4bitシフトする。 |
Rxdata = Makeint(temp1 , Temp2) |
' 上位バイトと下位バイトをワード変数に戻す。 |
|
− SHIFTINの新しい動作モード −
・modeの「入力ビット方向とクロックのエッジ」に新しいオプションが追加されました。
・新しいオプションを使用する場合は、Config Shiftin = New 命令でSHIFTIN命令の
動作モードを変更してください。
・動作モードを変更すると、すべてのSHIFTIN命令に対して機能します。
・SHIFTIN命令は、通常のSHIFT命令に近い動作をするようになります。
・ビットは左から右へ、または右から左へシフトされます。
・新しいSHIFTIN命令は、ビットのシフト時に元の変数の値(ビット)を保持することが
できます。
・例えば、元の変数の値が&B101で、入力する値が&B111の3ビットをシフトインすると、
結果の値は&B101111 になります。
・変数の値を保持する必要がない場合は、modeのオプションとしてパラメータに[8]を
加えてください。
(変数の値を読み込まないので、残りのビットは不確定です。)
(バイトで8ビットやワードで16ビットを満たす場合は、処理速度が上がりフラッシュの
容量も減らせます)
・modeのオプションとしてパラメータに[16]を加えると、変数の値は保持されませんが、
その初期値がクリアされます。
(シフトする前のデータをすべて0にするので、残りのビットは0になります)
・これは、8ビット以下のシフトを行う場合にのみ必要です。
(例えば、3ビットだけSHIFTINする)
・もう1つの重要な違いは、新しいSHIFTIN命令は最大8バイトまでしかSHIFTINできない
ことです。 (最大8バイトで最大64ビットです)
・この制約は、迅速な処理を行うためで、レジスターR16〜R23が使用されます。
・SHIFTINするビット数は指定することができ、それを変数にすることも可能です。
・ワード変数に値をSHIFTINする場合は、ビット数が自動的に16ビットになります。
・それは、すべての数値データの型に当てはまります。
・SHIFTINを行うコードの一部は、MCSライブラリに格納されています。
・これは、SHIFTIN命令が複数回使用される場合にコードを減らすことができますが、
そのコードが8バイト用に書かれているため、より少ないコード(例えばSHIFTINを1回だけ
使用)でシフトするには、最適ではありません。
・そのため、ライブラリのコードを使用する代わりに、シフト部分のコードを別に生成する
ように選択することができます。
・代わりのコード生成が必要な場合は、modeのオプションとしてパラメータに[32]を加えて
ください。
・もう1つの新しいオプションは、クロックピンと入力ピンの初期状態を設定する必要がない
ことです。
・初期値では、クロックピンは外部クロックのオプションに応じて、入力または出力に設定
されます。
・そして、外部クロックが使用されない場合は、クロックは初期状態に設定されます。
・SHIFTOUT後にSHIFTINを使いたい場合、レベルを変化させたくない場合があります。
・この場合は、modeのオプションとしてパラメータに[64]を加えてください。
記述例 : Shiftin Pind.3 , Portd.4 , Wdata , 2 + 16 + 32 , 3
mode = 2 に、[16]と[32]のオプションを追加します。
|
CONFIG SHIFTIN |
一覧へ戻る |
SHIFTIN命令が、新しいモードで動作するようにコンパイラーに指示します。
書式 |
Config Shiftin = mode |
注釈 |
mode = |
New : 新しいモードで動作します。
Compatible : 古いモードで動作します。
(古いSHIFTIN命令と互換) |
|
・SHIFTIN命令は、いくつかの変更で拡張されており、古いSHIFTIN命令と互換性が
無くなりました。
・古いプログラムのコードと互換性を持たせるために、この指示が追加され、どのモードで動作
するかを選択できます。
・初期状態では、古い動作モードが使用されます。
・新しい動作モードを使用する場合は、Config Shiftin = New を指定してください。
・動作の詳細はSHIFTIN命令に追記されています。
|
SHIFTOUT |
一覧へ戻る |
I/Oポートを利用して、クロック同期のシリアルデータを出力します。
書式 |
Shiftout PORTX.b , clock , variable , mode [, bits , width ] |
注釈 |
PORTX.b = |
データを出力するポートピンの名前。
( A , B , C , D , E , F ) ( 0 〜 7 ) |
|
clock = |
PORTX.b |
クロック用のポートピンの名前。
(A, B, C, D, E, F) (0〜7) |
|
variable = |
出力するデータを入れた変数名。 |
mode = |
出力ビット方向と、クロックのエッジ。
( 0 〜 3 )(下記別表を参照) |
|
bits = |
出力するビット数。 (オプション) ( 1 〜 255) |
width = |
クロック幅。 (width+@ μS 動作クロックに影響)
(オプション) |
|
mode出力ビット方向と、クロックのエッジの別表。
|
クロックのエッジ |
データ出力方向 |
0 |
立ち下がり |
MSBからLSB |
1 |
立ち上がり |
MSBからLSB |
|
|
クロックのエッジ |
データ出力方向 |
2 |
立ち下がり |
LSBからMSB |
3 |
立ち上がり |
LSBからMSB |
|
 |
AVRクロック8MHz(125nS)での実測値
width |
Tsu (uS) |
Tw (uS) |
Thold (uS) |
なし |
0.5 |
0.5 |
1.0 |
1 |
0.5 |
1.5 |
2.0 |
2 |
0.5 |
2.5 |
3.0 |
3 |
0.5 |
3.5 |
4.0 |
: |
: |
: |
: |
|
・Tsuは、AVR動作クロックの4クロック分です。
・Twはデフォルト(widthなし)で、AVR動作クロックの4クロック分です。
・width値により、1μSずつ広げることができます。
・Tsuは一定で、TwとTholdがwidth値によって広くなります。
・変数の型により、出力されるビット数は変わります。
オプションのビット数を指定した場合は、その値が優先されます。
・bitsは使用せずに、widthオプションのみを使用したい場合は、bits位置に
(NULL)を記述します。
|
ALIAS |
一覧へ戻る |
ポート名などの、割り当て先が決まっている固有名を、別の名前で参照できるようにします。
書式 |
newvar ALIAS oldvar |
注釈 |
newvar = |
新たに使用する名前。 |
oldvar = |
ポートピンなどの名前。 (PORTB.1等) |
|
・あるポートピンに、リレーやLEDなどを接続し、プログラムの随所でそれを制御すると
します。
・もし、プリント基板などの制約で、ポートピンを変更する必要が出た場合、プログラム中の
すべてのポートピン名を変更しなければなりません。
・この様な場合、プログラムの始めに、ALIAS命令でポートピンの名前を別の名前に置き
換えておき、変更があった場合は、ALIAS行のみを修正することで、プログラム中の
すべてのポートピン名が変更されます。
・CONST命令は、数値や文字列を参照させますが、ALIAS命令は、名前を参照させる
ことができます。
|
(例) |
|
Const On = 1 |
' "On"と言う名前の記号定数に、数値1を割り当てます。 |
Const Off = 0 |
' "Off"と言う名前の記号定数に、数値0を割り当てます。 |
Led1 Alias PORTC.1 |
' PORTC.1を、Led1と言う名前で参照させます。 |
Led2 Alias PORTC.2 |
' PORTC.2を、Led2と言う名前で参照させます。 |
Led3 Alias PORTC.3 |
' PORTC.3を、Led3と言う名前で参照させます。 |
' |
|
Set Led1 |
' PORTC.1がH(1)になります。 |
Led2 = 0 |
' PORTC.2がL(0)になります。 |
Led3 = On |
' PORTC.3がH(1)になります。 |
Led3 = Off |
' PORTC.3がL(0)になります。 |
|
|
DEBOUNCE |
一覧へ戻る |
ポートピンに接続したスイッチを検出し、チャタリング対策の遅延の後、指定ラベルへ分岐します。
書式 |
Debounce PINX.b , state , label [, SUB] |
注釈 |
X = |
ポートの名前。 ( A , B , C , D , E , F ) |
b = |
ピンの番号または数値変数。 ( 0 〜 7 ) |
state = |
分岐条件。(0 = ピンがL(0)で分岐 , 1 = ピンがH(1)で分岐) |
label = |
分岐先のラベル名。 (GOTOと同じようにジャンプします) |
SUB = |
オプション (label 先を、サブルーチン コールします) |
|
・まず、ポートピンの状態を検出し、分技条件に当てはまらなければ、何も処理をせずに
次の命令行へ移ります。
・スイッチの状態が分技条件と等しくなると、CONFIG DEBOUNCE命令で設定された、
チャタリング防止期間分の遅延の後、再度スイッチの状態を確認し、分技条件が継続
している場合は、ラベルで指定された行へ分岐します。
(チャタリング防止の遅延時間は、デフォルトで25mSです)
・SUBオプションを付けた場合は、ラベルで指定された行が、サブルーチンコールされます。
・一度検出されたスイッチは、オフになるまで次回の検出を行いません。 (パスします)
|
(例) |
|
Config PORTA = Input |
' ポートAを入力に設定。 |
PORTA = &B11111111 |
' ポートAを内部抵抗でプルアップ。 |
Do |
' 繰り返しループ。 |
Debounce PINA.0 , 0 , Swon , SUB |
' ポートAピン0のスイッチを検出。 |
Loop |
' |
' |
' |
Swon: |
' スイッチがONになった場合のサブルーチン。 |
Print "Switch On!" |
' スイッチONのメッセージを出力。 |
Return |
' サブルーチンの終了。 |
|
|
CONFIG DEBOUNCE |
一覧へ戻る |
DEBOUNCE命令で使用される、スイッチのチャタリング防止の遅延時間を設定します。
書式 |
Config Debounce = time |
注釈 |
|
・チャタリング防止の遅延時間は、デフォルトで25mSです。
|
(例) |
|
Config Debounce = 50 |
' 遅延時間を50mSに変更します。 |
|
|
CONFIG KBD |
一覧へ戻る |
キースイッチを、マトリックス(格子)状に接続した回路の、構成を設定します。
書式 |
Config Kbd = PORTX [, Debounce = valueDb]
[, Delay = valueDl]
[, Rows = 6 , Row5 = PINP.b , Row6 = PINP.b] |
注釈 |
X = |
キースイッチを接続する、ポートの名前。 ( A , B , C , D , E , F ) |
|
valueDb = |
オプション チャタリング防止の遅延時間。
( 1 〜 255 uS ) |
valueDl = |
オプション キー入力処理後の待ち時間。
( 1 〜 255 mS) |
|
P = |
オプション 24キーの場合の、追加ポート名。
( A , B , C , D , E , F ) |
b = |
オプション 24キーの場合の、追加ピン番号。 ( 0 〜 7 ) |
|
・4列×4行のマトリックス(格子)状に接続した、16個のキー
スイッチを走査するための設定を行います。
・16個までのキーの場合は、列と行を同一ポートに接続する必要が
あります。
・Rows = 6 オプションを指定すると、24個のキーまで対応できる
ようになります。
この場合は、任意のポートピンを追加行(Row5,Row6)として
指定できます。 (Rows は、6以外に指定できません)
・Debounce チャタリング防止の遅延時間は、デフォルトで20uS
です。
・Delay は、実際にキーを走査する [GETKBD] 命令をループ処理
する場合に、
ノイズ等の誤動作を防ぐために使用します。
・使用するスイッチの接点間隔等によって、誤動作が起きる場合は、
各ポートとスイッチ間に、470〜1KΩの抵抗を直列に入れて下さい。 |
 |
|
GETKBD |
一覧へ戻る |
キースイッチを、マトリックス(格子)状に接続した回路の、キー入力を検出します。
書式 |
variable = Getkbd() |
注釈 |
variable = |
キー入力の内容を読み込む変数の名前。 (バイト型) |
|
・先に、CONFIG KBD 命令によって、キースイッチの接続ポート等の指定を行う必要が
あります。
・どのキーも押されていない場合は、変数に[16] が入ります。 (24キーの場合は[24] )
・キー入力があった場合は、列と行に対応して、0〜15の値が入ります。
(24キーの場合は0〜23 )
・キー入力値を、任意の値に変換したい場合は、LOOKUP 命令を使用します。
・GETKBD 命令を実行時には、毎回キーの走査に必要なポート設定を行っているので、
列または行の4ポートを、LCD等のデータポートと兼用することもできます。
|
(例) |
|
Dim K As Byte |
' 変数Kを宣言。 |
Config Kbd = PORTB |
' ポートBに、キースイッチを16個接続する。 |
' |
' |
Keyin: |
' |
K = Getkbd() |
' キー入力を検出する。 |
If K > 15 Then Goto Keyin |
' キー入力の有無を確認する。 |
Print K |
' キーの値を出力する。 |
Goto Keyin |
' |
|
|
CONFIG KEYBOARD |
一覧へ戻る |
PS/2(AT)キーボードを、ポートに接続する場合の、構成を設定します。
書式 |
Config Keyboard = PINX.b , Data = PINY.c , Keydata = label |
注釈 |
X = |
[CLOCK] 入力を接続する、ポートの名前。
( A , B , C , D , E , F ) |
b = |
[CLOCK] 入力を接続する、ピンの番号。 ( 0 〜 7 ) |
|
Y = |
[DATA] 入力を接続する、ポートの名前。
( A , B , C , D , E , F ) |
c = |
[DATA] 入力を接続する、ピンの番号。 ( 0 〜 7 ) |
|
label = |
「キー・スキャンコード → ASCIIコード」 変換テーブルのラベル名。 |
|
・PS/2(AT)キーボードは、 「CLOCK、DATA、VCC、GND」の、4本のラインで接続
できます。
・キーボードからのキーデータは、ASCIIコードの代わりに、専用のキー・スキャンコードが
送られてきますので、変換テーブルにより、データを変換する必要があります。
「JIS配列PS/2 キーボードスキャンコード表」 を参照。
・実際の変換テーブルや接続回路は、グラフィックLCDで、RS-232Cターミナルの製作
の記事を参照して下さい。
|
GETATKBD |
一覧へ戻る |
PS/2(AT)キーボードから、キーデータを入力します。
書式 |
variable = Getatkbd() |
注釈 |
variable = |
キー入力の内容を読み込む変数の名前。
(バイト型 または 文字列) |
|
・先に、CONFIG KEYBOARD 命令によって、接続ポートの指定を行う必要があります。
・キーが押された場合は、変換テーブルにより、ASCIIコードに変換されたデータが変数に
入ります。
・この命令は、割り込みを使用しないので、キーが押されるのを待ち続けます。
・他の処理と平行して動作させる場合は、[CLOCK] 入力を外部割り込みポートに接続
するなどの工夫が必要です。
・実際の変換テーブルや接続回路は、グラフィックLCDで、RS-232Cターミナルの製作
の記事を参照して下さい。
|
GETATKBDRAW |
一覧へ戻る |
PS/2(AT)キーボードから、ASCIIコードに変換前の、キー・スキャンコードを取得します。
書式 |
variable = Getatkbdraw() |
注釈 |
variable = |
キーコードの内容を読み込む変数の名前。
(バイト型 または 文字列) |
|
・先に、CONFIG KEYBOARD 命令によって、接続ポートの指定を行う必要があります。
・キーが押された場合は、ASCIIコードに変換前の、キー・スキャンコードが変数に入ります。
・この命令は、割り込みを使用しないので、キーが押されるのを待ち続けます。
・他の処理と平行して動作させる場合は、[CLOCK] 入力を外部割り込みポートに接続
するなどの工夫が必要です。
・実際の変換テーブルや接続回路は、グラフィックLCDで、RS-232Cターミナルの製作
の記事を参照して下さい。
|
READEEPROM |
一覧へ戻る |
EEPROMからデータを読み込み、変数に入れます。
書式 |
Readeeprom variable , address |
注釈 |
variable = |
データを読み込む変数の名前。 |
address = |
EEPROMのアドレス。
( 0 〜 ) (変数やラベルも使用可能) |
|
・この命令は、BASCOM-8051との互換性のために、用意されています。
・アドレスは、接頭語に[ $ ]または[ &H ]を付けることで、どちらも16進表記になります。
・EEPROMのアドレスは、$00番地から始まります。
・ATMELのデータシートによると、EEPROMの最初のアドレス$00番地は、リセット中に
書き込みが行われる可能性があるので、使用しないようにアドバイスされています。
・READEEPROM命令の代わりに、DIM命令でERAMに指定された、変数や配列を
使うこともできます。
|
(例) 上と下は同じ動作をします。 |
|
Dim B As Byte |
' 変数Bを宣言。 |
Readeeprom B , $01 |
' EEPROMの$01番地から、データを変数Bへ読み込む。 |
' |
' |
Dim A As Eram Byte At $01 |
' 変数Aを、EEPROMの$01番地へ宣言。 |
Dim B As Byte |
' 変数Bを宣言。 |
B = A |
' EEPROMの$01番地から、データを変数Bへ読み込む。 |
|
|
WRITEEEPROM |
一覧へ戻る |
EEPROMへ、変数のデータを書き込みます。
書式 |
Writeeeprom variable , address |
注釈 |
variable = |
書き込むデータが入っている変数の名前。 |
address = |
EEPROMのアドレス。 ( 0 〜 )
(変数やラベルも使用可能) |
|
・この命令は、BASCOM-8051との互換性のために、用意されています。
・アドレスは、接頭語に[ $ ]または[ &H ]を付けることで、どちらも16進表記になります。
・EEPROMのアドレスは、$00番地から始まります。
・ATMELのデータシートによると、EEPROMの最初のアドレス$00番地は、リセット中に
書き込みが行われる可能性があるので、使用しないようにアドバイスされています。
・EEPROMに書き込みが行われる際は、全ての割り込みが禁止され、書き込み終了時に
許可されます。
・WRITEEEPROM命令の代わりに、DIM命令でERAMに指定された、変数や配列を
使うこともできます。
|
(例)上と下は同じ動作をします。 |
|
Dim B As Byte |
' 変数Bを宣言。 |
For B = 1 To 5 |
' 5回の繰り返し。 |
Writeeeprom B , B |
' EEPROMの$01から$05番地へ、01から05を書き込む。 |
Next |
' |
' |
' |
Dim A(5) As Eram Byte At $01 |
' 配列Aを、EEPROMの$01番地から5個宣言。 |
Dim B As Byte |
' 変数Bを宣言。 |
For B = 1 To 5 |
' 5回の繰り返し。 |
A(B) = B |
' EEPROMの$01から$05番地へ、01から05を書き込む。 |
Next |
' |
|
|
INP |
一覧へ戻る |
AVRのレジスターやSRAM、およびXRAMに割り当てられたメモリー内容を、変数に読み込みます。
書式 |
variable = Inp(address) |
注釈 |
variable = |
メモリー内容を読み込む変数の名前。 |
address = |
メモリーアドレス。 ( &H0 〜 &HFFFF )
(変数(ワード型)も使用可能) |
|
・INP命令は、AVRのレジスターや内蔵SRAM、およびXRAM(外部メモリー)に割り当て
られた、アドレス &H0000〜&HFFFF 全てのエリアから、メモリー内容を読み込めます。
|
OUT |
一覧へ戻る |
AVRのレジスターやSRAM、およびXRAMに割り当てられたメモリーに、データを書き込みます。
書式 |
Out address , value |
注釈 |
address = |
メモリーアドレス。 ( &H0 〜 &HFFFF )
(変数(ワード型)も使用可能) |
value = |
書き込むバイト型データ。(変数(バイト型)も使用可能) |
|
・OUT命令は、AVRのレジスターや内蔵SRAM、およびXRAM(外部メモリー)に割り当て
られた、アドレス &H0000〜&HFFFF 全てのエリアのメモリーに、データを書き込めます。
|
PEEK |
一覧へ戻る |
AVRのレジスター・ファイルの内容を、変数に読み込みます。
書式 |
variable = Peek(address) |
注釈 |
variable = |
レジスターの内容を読み込む変数の名前。 |
address = |
レジスターの番号。 ( 0 〜 31 ) (変数も使用可能) |
|
|
POKE |
一覧へ戻る |
AVRのレジスター・ファイルに、データを書き込みます。
書式 |
Poke address , value |
注釈 |
address = |
レジスターの番号。 ( 0 〜 31 ) (変数も使用可能) |
value = |
書き込むバイト型データ。(変数(バイト型)も使用可能) |
|
|
CPEEK |
一覧へ戻る |
コード・メモリー(プログラム用フラッシュ・メモリー)の内容を、変数に読み込みます。
書式 |
variable = Cpeek(address) |
注釈 |
variable = |
コード・メモリーの内容を読み込む変数の名前。 |
address = |
コード・メモリーのアドレス。 ( 0 〜 )
(変数も使用可能) |
|
・コード・メモリーには、BASICプログラムから書き込みができないので、CPOKE命令は
存在しません。
|
CPEEKH |
一覧へ戻る |
mega103・mega128のLPM命令による、上位バンクのメモリー内容を、変数に読み込みます。
書式 |
variable = Cpeekh(address [, page] ) |
注釈 |
variable = |
上位バンク・メモリーの内容を読み込む変数の名前。 |
address = |
メモリーのアドレス。 ( 0 〜 ) (変数も使用可能) |
page = |
64KB毎のページアドレス。 ( 0 〜 )
(変数も使用可能) オプション |
|
|
VARPTR |
一覧へ戻る |
変数が割り当てられている、メモリー・アドレスを、変数に入れます。
書式 |
variable = Varptr(target) |
注釈 |
variable = |
アドレスを入れる変数の名前。 (ワード型) |
target = |
アドレスを調べる変数の名前。 |
|
|
LOADLABEL |
一覧へ戻る |
ラベルが割り当てられているメモリー・アドレスを、変数に入れます。
書式 |
variable = Loadlabel(label) |
注釈 |
variable = |
アドレスを入れる変数の名前。 |
label = |
アドレスを調べるラベル名。 |
|
|
MEMCOPY |
一覧へ戻る |
変数が割り当てられているメモリー内容を、ブロック・コピーします。
書式 |
number = Memcopy(source , target , bytes , option) |
注釈 |
number = |
コピーされた総数を入れる変数の名前。
(ワードまたはインテジャー型) |
source = |
コピー元の変数。 |
target = |
コピー先の変数。 |
bytes = |
コピーするバイト数。 |
|
option = |
1 |
- コピー元のアドレスだけインクリメントされる。 |
2 |
- コピー先のアドレスだけインクリメントされる。 |
3 |
- コピー元・先、共にアドレスがインクリメントされる。
(デフォルト) |
|
・コピー元の変数が割り当てられているメモリー・アドレスの内容を、コピー先の変数が
割り当てられているメモリー・アドレスへコピーします。
|
MEMFILL |
一覧へ戻る |
メモリーの任意の範囲を指定した値で埋めます。
書式 |
MEMFILL variable , bytes , value |
注釈 |
variable = |
埋め込みを開始する最初のアドレスとなる変数名。
(数値変数、配列) |
bytes = |
埋めるバイト数(1〜65535)または 数値変数 (Word) |
value = |
メモリーに埋め込むASCII値を持った数値 または 任意の数値定数 |
|
・MEMFILLの使用目的は、配列をクリアするか、配列をすばやく同じ値で埋めることです。
・埋め込みを開始する最初のアドレスとなる変数名は、通常の数値変数またはar(1)の
ような配列です。
・配列を全てクリアするには、埋め込む値に0を使用します。
※ 埋めるためのバイト数が0であるかどうかはチェックされません。
※ 変数を使用して埋めるバイト数の指定が0の場合は、その値が&HFFFFと受け取られる
ため、変数の内容が0でないことを確認してください。
|
(例) |
|
Dim Ar(100) As Byte |
' 使用する配列を宣言。 |
Memfill Ar(1) , 10 , 65 |
' 配列の先頭から10個を65(ASCII"A")で埋める。 |
|
|
CONFIG XRAM |
一覧へ戻る |
外部メモリー(XRAM)へのアクセス状態と、ウェイト・ステートを設定します。
書式 |
Config Xram = state , Waitstatels = Wls , Waitstatehs = Whs |
注釈 |
state = |
Enabled |
- 外部メモリーを有効にします。 |
disabled |
- 外部メモリーを無効にします。 |
|
Wls = |
外部メモリーの下位領域に設定する、ウェイト・ステートの数。
(オプション) |
Whs = |
外部メモリーの上位領域に設定する、ウェイト・ステートの数。
(オプション) |
|
・外部メモリーへのアクセスは、デフォルトで無効になっています。
・ウェイト・ステートの数は、チップにより設定が変わります。 (0〜3などの数値)
・領域設定は、デフォルトで上位領域のみです。 (チップのマニュアルを参照)
・現在、BASCOM-AVRには、領域を変更する命令が見あたりません。
・$XA、$WAITSTATE命令の代わりに、この命令を使用するようにして下さい。
・メモリー容量や開始アドレスを設定する、$XRAMSIZE、$XRAMSTART命令も
参照して下さい。
|
DATA |
一覧へ戻る |
あらかじめ用意された複数のデータ値を、プログラムに記述します。
書式 |
Data value , value , ・・・ |
注釈 |
value = 数値 または "文字列" |
・DATA命令の後に、数値または文字列を、カンマ[ , ]で区切り記述します。
・1行に記述する数は決められていませんが、10個程度が見やすいでしょう。
・DATA行を、複数の行に分けて記述しても、1連のデータとして扱われます。
・DATA行は、通常END命令の後に記述します。
・DATA行の冒頭と、任意の行に、ラベルを付けておく必要があります。
|
Testdata: |
' データ行のラベル。 |
Data 12 , 56 , &H10 |
' バイト型の数値データ。 |
Data "Test1" , "Test2" |
' 文字列のデータ。 |
Data $34 |
' [$]はASCII文字のデータ。 (用途不明) |
Data 1000% , &H1234% |
' ワード型のデータは、末尾に[ % ]を付けます。 |
Data -32768% , 32767% |
' インテジャー型のデータも、末尾に[ % ]を付けます。 |
Data 2147483647& |
' ロング型のデータは、末尾に[ & ]を付けます。 |
Data 2147483647! |
' シングル型のデータは、末尾に[ ! ]を付けます。 |
Data 2147483647# |
' ダブル型のデータは、末尾に[ # ]を付けます。 |
|
・DATA行を使用して、EEPROM用のデータを用意することもできます。
$EEPROM を参照。
|
RESTORE |
一覧へ戻る |
READ命令でデータを読み込む際に、DATA行の読み込みを開始する位置を指定します。
書式 |
Restore label |
注釈 |
label = データ行に付けられたラベル名。 |
・READ命令でデータを読み込むと、データの位置を示すポインターは、読み込みが終わった
位置まで進みます。
・再度、初めのデータを読み込む場合には、RESTORE命令で、ポインターを戻す必要が
あります。
・また、複数のデータブロックに、それぞれラベルを付けておけば、任意のデータを読み込む
ことができます。
|
Testdat1: |
' データ行のラベル。 |
Data 11 , 12 , 13 |
' バイト型の数値データ。 |
' |
' |
Testdat2: |
' データ行のラベル。 |
Data 21 , 22 , 23 |
' バイト型の数値データ。 |
' |
' |
Testdat3: |
' データ行のラベル。 |
Data 31 , 32 , 33 |
' バイト型の数値データ。 |
|
|
READ |
一覧へ戻る |
DATA行からデータを読み込み、変数に入れます。
書式 |
Read variable |
注釈 |
variable = データを読み込む変数の名前。 |
・読み込むデータの型式と、変数の型式は、同じにする必要があります。
・初めてREAD命令を実行する際には、必ずRESTORE命令でDATA行の位置を指定して
下さい。
・READ命令でデータを読み込むと、データの位置を示すポインターは、読み込みが終わった
位置まで進みます。
・再度、初めのデータを読み込む場合には、RESTORE命令で、ポインターを戻す必要が
あります。
・また、複数のデータブロックに、それぞれラベルを付けておけば、任意のデータを読み込む
ことができます。
|
Dim A As Byte , B As Byte |
' 使用する変数を宣言。 |
Restore Testdat1: |
' データ行を指定。 |
For B = 1 To 3 |
' 3回の繰り返し。 |
Read A |
' データを変数へ読み込み。 |
Print A |
' 読み込んだデータを出力。 |
Next |
' |
End |
' プログラムの終了。 |
' |
' |
Testdat1: |
' データ行のラベル。 |
Data 11 , 12 , 13 |
' データ行。 |
|
|
LOOKUP |
一覧へ戻る |
指定したDATA行の先頭から、任意の位置にある数値データを、変数に読み込みます。
書式 |
variable = Lookup(value , label) |
注釈 |
variable = |
データを読み込む、数値変数の名前。 |
value = |
先頭からの位置。 ( 0 〜 65535 )
(変数も使用可能) |
label = |
データ行に付けられたラベル名。 |
|
・LOOKUP命令は、数値データにのみ対応しています。 文字データは、LOOKUPSTR
命令で扱えます。 ・読み込むデータの型式と、変数の型式は、同じにする必要があります。
・先頭からの位置は、0が先頭のデータを示します。
|
(例) |
|
Dim A As Byte |
' 使用する変数を宣言。 |
A = Lookup(3 , Tdat1) |
' Tdat1のDATA行から4番目のデータを変数に
読み込み。 |
Print A |
' 読み込んだデータを出力。(13が出力されます) |
End |
' プログラムの終了。 |
' |
' |
Tdat1: |
' データ行のラベル。 |
Data 10 , 11 , 12 , 13 , 14 , 15 |
' データ行。 |
|
|
LOOKUPSTR |
一覧へ戻る |
指定したDATA行の先頭から、任意の位置にある文字データを、変数に読み込みます。
書式 |
variable = Lookupstr(value , label) |
注釈 |
variable = |
データを読み込む、文字変数の名前。 |
value = |
先頭からの位置。 ( 0 〜 255 ) (変数も使用可能) |
label = |
データ行に付けられたラベル名。 |
|
・LOOKUPSTR命令は、文字データにのみ対応しています。 数値データは、LOOKUP
命令で扱えます。
・先頭からの位置は、0が先頭のデータを示します。
|
(例) |
|
Dim A As String * 2 |
' 使用する変数を宣言。 |
A = Lookupstr(2 , Sdat1) |
' Sdat1のDATA行から3番目の文字列を変数に
読み込み。 |
Print A |
' 読み込んだデータを出力。 (EFが出力されます) |
End |
' プログラムの終了。 |
' |
' |
Sdat1: |
' データ行のラベル。 |
Data "AB" , "CD" , "EF" , "GH"
|
' データ行。 |
|
|
LOOKDOWN |
一覧へ戻る |
指定したDATA行の中から、任意の数値データを検索し、先頭からの位置を変数に
入れます。
書式 |
variable = Lookdown(search , label , entries) |
注釈 |
variable = |
検索結果(位置)を入れる、変数の名前。 (インテジャー型) |
search = |
検索する数値を入れた変数。 (変数のみ使用可能) |
label = |
データ行に付けられたラベル名。 |
entries = |
検索する最大個数。 (変数も使用可能) |
|
・DATA行のデータと、検索する数値の型式は、同じにする必要があります。
・先頭からの位置は、1が先頭のデータを示します。
・データが見つからない場合は、-1が変数に入ります。
|
(例) |
|
Dim I As Integer , A As Byte |
' 使用する変数を宣言。 |
A = 13 |
' 検索する数値を変数に入れる。 |
I = Lookdown(a , Tdat1 , 5) |
' 検索を実行。 |
Print I |
' 結果を出力。 (3が出力されます) |
End |
' プログラムの終了。 |
' |
' |
Tdat1: |
' データ行のラベル。 |
Data 11 , 12 , 13 , 14 , 15 |
' データ行。 |
|
|
|