MemIn関数

指定したメモリーI/Oポートの状態を返します。各ポートには8個のメモリービットがあります。

書式
MemIn(ポート番号)

パラメーター

ポート番号
メモリーI/Oのバイトを指定します。

戻り値
0~255までの整数を返します。戻り値は、8ビットで、各ビットがメモリーI/Oビット1個に対応します。

解説
MemInは、1度にメモリーI/Oビット8個の値を見ることができます。MemIn命令は、メモリーI/Oビット8個の状態を1つの変数に保存したり、Waitとともに用いることで、2個以上のI/Oビットに関係する特定の条件に一致するまで、プログラムを待機したりできます。

1度に8ビットの値を得ることができるので、戻り値の範囲は、0~255になります。下記の表で、それぞれの戻り値と個々のメモリーI/Oビットの状態の対応を、参照してください。

メモリーI/Oビット表 (ポート0使用時)

戻り値 7 6 5 4 3 2 1 0
1 Off Off Off Off Off Off Off On
5 Off Off Off Off Off On Off On
15 Off Off Off Off On On On On
255 On On On On On On On On

メモリーI/Oビット表 (ポート31使用時)

戻り値 255 254 253 252 251 250 249 248
3 Off Off Off Off Off Off On On
7 Off Off Off Off Off On On On
32 Off Off On Off Off Off Off Off
255 On On On On On On On On

注意


  • MemInとMemSwの違い

    MemSw命令により、メモリーI/Oビット1の値が読み取れます。MemSwの戻り値は0または1で、メモリーI/OビットがOnであるかOffであるかを表わします。MemSwはメモリーI/Oビットを個別にチェックします。MemIn命令は、メモリーI/Oビットの状態をチェックするという点で、MemSw命令に似ています。ですが、MemSw命令はメモリーI/Oを、1ビットずつ状態をチェックするのに対し、MemIn命令は8ビット同時にチェックします。MemInの戻り値は、0~255までの値を返します。その値により、8ビットのうちどれがOnで、どれがOffであるかがわかります。


参照
In, InBCD, Off, MemOff, On, MemOn, OpBCD, Oport, Out, MemOut, Sw, MemSw, Wait

MemIn関数使用例
下記は、最初の8個のメモリーI/Oの現在の値を求めたあと、8個すべての値が"0"であることを確認して次に進むプログラムの例です。戻り値が"0"でない場合は、エラーメッセージが表示され、タスクは停止します。

Function main
    Integer var1

    var1 = MemIn(0)  '最初の8個のメモリーI/Oビットの値を取得
    If var1 = 0 Then
        Go P1
        Go P2
    Else
        Print "Error in initialization!"
        Print "First 8 memory I/O bits were not all set to 0"
    EndIf
Fend

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

> memout 0, 1
> print MemIn(0)
1
> memon 1
> print MemIn(0)
3
> memout 31,3
> print MemIn(31)
3
> memoff 249
> print MemIn(31)
1
>