InBCD関数
指定された8ビットポートごとの入力状態を読み取り、2桁の2進化10進数 (BCD) として読み取り、10進数に変換して返す関数です。
書式
InBCD(ポート番号)
パラメーター
- ポート番号
- I/Oの入力バイトを指定します。
戻り値
入力ポート (0~99)の状態をBCD (0~9)で返します。
解説
InBCDは、BCDで同時に8個の入力ラインを読みます。InBCD命令のパラメーター"ポート番号"で、どのビットグループの状態を読むか指定します。例えば、ポート番号= 0 のとき0~7の入力ビットの状態を、ポート番号= 1 のとき8~15の入力ビットの状態を読む、ということになります。
8個の入力ビットの状態は、BCDで返されます。戻り値は、0~99の1または2桁の数値です。1桁目 (10の位)は、ポート番号で指定した8個の出力ビットのうち上位4ビットに対応します。2桁目 (1の位)は、ポート番号で指定した8個の出力ビットのうち下位4ビットに対応します。
各桁におけるBCDの有効値は0~99なので、I/Oのすべての組み合わせを満たすことができません。下記表でポート番号= 0のとき、可能なI/O状態の組み合わせと戻り値を、一部示しています。
入力設定 (入力番号)
| 戻り値 | 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 | On | Off | Off | Off | Off |
| 11 | Off | Off | Off | On | Off | Off | Off | On |
| 99 | On | Off | Off | On | On | Off | Off | On |
BCDでは、10進数しか指定することができません。このことは、特定のポートですべての入力ビットが同時にオンであるようなとき、BCDを使うInBCD命令では有効な値を求めることは不可能だということを意味します。InBCDでは最大戻り値は、"99"です。上記の表からもわかるように、"99"が戻り値のときには、すべての入力がオンにはなりません。戻り値"99"のときオンの入力ビットは、0, 3, 4, 7で、その他のビットはすべてオフになっています。
注意
InBCDとInの違い
- InBCD関数は、指定された8ビットポートの状態を、上位4ビット、下位4ビットで分けた2桁のBCDデータとして読み取ります。よって、4ビットの状態が9 (&B1001) を超える &B1010~&B1111 の場合、エラーが発生します。
- In関数は、指定された8ビットポートの状態をそのまま10進数に変換して返します。
参照
In関数, MemOff, MemOn, MemOut, MemSw関数, Off, On, OpBCD, Oport関数, Out, Sw関数, Wait
InBCD使用例
コマンドウィンドウからの簡単な操作例です。
入力ビット0, 4, 10, 16, 17, 18 がオンで、他の入力ビットはオフだと仮定しています。
> Print InBCD(0)
11
> Print InBCD(1)
04
> Print InBCD(2)
07
>