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
>