DEFIO
(ステートメント)

入出力ポートに対応するIO変数(I/O変数)を宣言します。

DEFIO <変数名> = <I/O変数の型>,<ポートアドレス>[,<マスク情報>]

<変数名>で指定した変数をI/O変数として宣言します。
<I/O変数の型>
I/O変数の型を選択します。I/O変数の型は、BIT、BYTE、WORD、INTEGER、SINGLEがあります。BIT型は1ビット、BYTE型は8ビット、WORD型は16ビット、INTEGER型は32ビット、SINGLE型は32ビットの範囲を指定します。
(SINGLE型はVer.3.2未満では使用できません)
<ポートアドレス>
入出力ポートでの開始番号を指定します。
整数型定数で指定します。
2つの整数型定数の加減算式による指定も可能です。
<マスク情報>
入力ポートの場合、入力データとマスク情報のANDをとります。
出力ポートの場合、出力データとマスク情報のANDをとり出力しますが、マスクがセットされていないビットの出力状態は変化しません。
SINGLEではマスク情報は無効です。マスク情報を記述するとコンパイルエラーとなります。

-
WORD,INTEGERの場合、最上位ビットにあたるポートは符号ビットとなります。SINGLEの表現方法は、IEEE 754形式です。数値の範囲と、各種ビットに対するポート番号は下記のとおりとなります。WORD数値範囲 : -32768 ~ 32767最上位ビットポート番号:開始ポートアドレス + 15INTEGER数値範囲 : -2147483648 ~ 2147483647最上位ビットポート番号:開始ポートアドレス + 31SINGLE数値範囲 : -3.4E+38~3.4E+38符号部ポート番号 :開始ポートアドレス + 31指数部ポート番号 :開始ポートアドレス + 30~開始ポートアドレス + 23仮数部ポート番号 :開始ポートアドレス + 22~開始ポートアドレス
-
WINCAPSIIIでは、SINGLE型の値の表示(ウォッチなど)に対応していません。SINGLE型の値の参照はティーチングペンダントで行ってください。
-
WORD型の数値範囲は、INコマンドで値を取得する時の範囲です。OUTコマンドで出力する時にこの範囲を超える数値を指定した場合、整数部分の下位16ビットを出力します。

#DEFINE IO_OFFSET 256
|
'"IO_OFFSET"を256として定義
|
DEFIO samp1 = BIT, 1
|
'samp1をポート1から始まるBIT型I/O変数として宣
'言します。samp1の返値は、ポート1の状態を表す、0
'または1の1ビット整数となります。
|
DEFIO samp2 = BYTE, 10, &B00010000
|
'samp2をポート10から始まるBYTE型I/O変数のマス
'ク情報を付けて宣言します。samp2の返値は、ポート10
'の状態を表す、0または16の8ビット整数となります。
|
DEFIO samp3 = WORD, 15
|
'samp3をポート15から始まるWORD型I/O変数として
'宣言します。samp3の返値は、ポート15から30の状態
'を表す、0~&Hffffの16ビット整数となります。
|
DEFIO samp4 = INTEGER, 1
|
'samp4をポート1から始まるINTEGER型I/O変数とし
'て宣言します。samp4の返値は、ポート1から32の状
'態を表す、0~&Hffffffffの32ビット整数となります。
|
DEFIO samp5 = BYTE, IO_OFFSET + 10
|
'samp5 を10 + IO_OFFSETの計算結果(用例では266)
'のポート番号 から始まるBYTE 型I/O 変数として
'宣言します。samp5 の返値は、用例ではポート266
'から273 の状 態を表す、0 ~ &Hff の8 ビット整数
'となります
|
DEFIO samp6 = SINGLE, 128
|
'samp6をポート128から始まるSINGLE型I/O変数として
'宣言します。
'samp6の戻値は、ポート128から159の状態を表す、
'-3.4E+38~3.4E+38の32ビット単精度実数となります。
|