Out

8個の出力ビットを同時に設定 (出力)します。

書式
Out ポート番号, 出力データ [, Forced]

パラメーター

ポート番号
I/O出力バイトを指定します。指定数値は、下記のように出力ビットに対応します。

ポート番号 出力ビット
0 0-7
1 8-15
... ...
出力データ
ポート番号で指定した出力グループの出力パターンを、0~255の整数値で指定します。16進数で表示された場合は、&H0から&HFFが範囲になります。下位桁は、下位ビット (または最初の4出力ビット)を、上位桁は、上位ビット (または次の4出力ビット)を表わします。
Forced
省略可能です。通常は省略します。

解説
Outは、ポート番号と出力データの組み合わせで8個の出力ビットを同時に設定します。ポート番号パラメーターで、どのグループ (どの8個の出力ビット)を使うか指定します。例えば、ポート番号= 0 のとき出力ビット0~7、ポート番号 = 1のとき出力ビット8~15を指定します。

まずポート番号で8個の出力ビットを指定したのち、出力データパラメーターで特定の出力パターンを指定します。出力データパラメーターがとる値は0~255で、16進数あるいは10進数の整数で指定します。(&H0~&HFF、または0~255)

下記表は、I/Oの組み合わせ例の一部を、それに対応する出力データ値とともに、ポート番号が"0"および"1"のときに分けて示したものです。

ポート番号=0 の時の出力設定 (出力ビット番号)

出力データ値 7 6 5 4 3 2 1 0
01 Off Off Off Off Off Off Off On
02 Off Off Off Off Off Off On Off
03 Off Off Off Off Off Off On On
08 Off Off Off Off On Off Off Off
09 Off Off Off Off On Off Off On
10 Off Off Off Off On Off On Off
11 Off Off Off Off On Off On On
99 Off On On Off Off Off On On
255 On On On On On On On On

ポート番号=1 の時の出力設定 (出力ビット番号)

出力データ値 15 14 13 12 11 10 9 8
01 Off Off Off Off Off Off Off On
02 Off Off Off Off Off Off On Off
03 Off Off Off Off Off Off On On
08 Off Off Off Off On Off Off Off
09 Off Off Off Off On Off Off On
10 Off Off Off Off On Off On Off
11 Off Off Off Off On Off On On
99 Off On On Off Off Off On On
255 On On On On On On On On

注意


  • OpBCDとOutの違い

    SPEL+のOutとOpBCDは、下記の2つの点で大きく異なります。

    • OpBCD命令は、オン、またはオフする8個の出力ビットを指定するのに2進化10進 (BCD)フォーマットを使います。2進化10進フォーマットでは、&HA, &HB, &HC, &HD, &HE そして&HF などの値は使えないので、8個の出力ビットの組み合わせすべてを満たすことができません
    • Out命令は、出力をオン、またはオフする8ビットの値に0~255の値を使います (OpBCDでは0~99です)。これにより、8ビット出力グループの可能な組み合わせすべてを満たせることになり、ユーザーの仕様に合わせて指定することができます。
  • Forcedフラグ

    NoPauseタスク, NoEmgAbortタスク (Xqt時に、NoPauseやNoEmgAbortを指定して開始された特別なタスク)、およびバックグラウンドタスクから、非常停止中や安全扉開時にI/O出力のオンを行う場合にこのフラグを指定します。

    非常停止中や安全扉開時にI/O出力が変化するのでシステム設計上の注意が必要です。


参照
In関数, InBCD関数, MemOff, MemOn, MemOut, MemSw関数, Off, On, Oport関数, Sw関数, Wait

Out使用例
下記は、メインタスクが"iotask"という名前のタスクを起動するプログラムです。"iotask"は、出力ビット0~3をオンオフする簡単なタスクです。Out命令を使うと、出力ビットを個々にオンオフせず、1つのコマンドでそれを行うことができます。

Function main

  Xqt iotask
  Do
    Go P1
    Go P2
  Loop
Fend

Function iotask

  Do
    Out 0, &H0F
    Out 0, &H00
    Wait 10
  Loop
Fend

コマンドウィンドウからの簡単な操作例です。

> Out 1,6    '出力9と10をオン
> Out 2,1    '出力8をオン
> Out 3,91   '出力24, 25, 27, 28, 30をオン