BASICプログラミング

A. 論理(回路)演算 4

 入力データ(信号)を10進数として、そのデータを2進数で出力する回路を「エンコーダ」という。逆に、入力信号を2進数として、そのデータに対応する場所(番号)に信号を出力する回路を「デコーダ」という。
 ここでは、エンコーダのプログラムについて学習する。

例題A05 次のプログラムは、エンコーダ(10入力)の真理値表を出力するものである。  [REIA05.BAS]

エンコーダの回路図

 10個の入力のために変数を10個用意する必要があるが、それでは大変なので、10文字の文字列として入力できるようにする。同じように、出力は4個あるので、4文字の文字列として出力するようにする。

▼作成@ 入力データを読み込み、一つ一つ(1ビットずつ)に分割するプログラムを作成する。

REIA05のプログラム
REIA05のプログラム

[解説] 

 10320〜10410行は、10文字の入力データを1文字ずつに分割するプログラムである。
 10420行と10430行は、分割したデータを確認するための出力である。

[実行結果] 色部分が入力データである。

REIA05の実行結果

 1と0が間隔をあけて出力されている部分が10420行と10430行で確認用に出力したデータである。その次の1と0が詰まって出力されている部分が180行で読み込んだデータをそのまま出力しているデータである。


▼作成A 出力D0〜D3を分割したデータから計算するプログラムを追加作成する。

それぞれの出力の論理式は回路図から次の通りとなる。
D0=B OR D OR F OR H OR J
D1=C OR D OR G OR H
D2=E OR F OR G OR H
D3=I OR J
プログラムでは、Aのデータは変数AAAAAに格納されている。ほかのデータもプログラム中の変数に読み替える。
 230行までのメインプログラムは同じである。

REIA05のプログラム

[解説] 

 10420〜10450行は、それぞれの出力の論理式をプログラムにしたものである。
 10460行は、論理式の結果を確認するための出力である。

[実行結果] 色部分が入力データである。

REIA05の実行結果

 1と0が間隔をあけて出力されている部分が10460行で確認用に出力したデータである。その次の1と0が詰まって出力されている部分が180行で読み込んだデータをそのまま出力しているデータである。


▼作成B エンコーダ(10入力)の真理値表を出力するプログラムを完成させる。

REIA05のプログラム

[解説] 

 10460〜10490行は、論理計算の結果(数値)をSTR$関数で文字に変換して連結している。数値を文字に変換すると符号(この場合、"+"に相当する空白文字)が付くのでRIGHT$関数で1けた分だけを取り出して連結している。

[実行結果] 色部分が入力データである。

REIA05の実行結果

 この例題のように、エンコーダという複雑そうな回路であっても、論理式がわかればどのような回路のプログラムでも作成することができる。

 


【参考】
 論理式をプログラムにしていけば回路のプログラムを作成することができる。しかし、入力データに対して、真理値表と同じ結果が得られれば、その回路のプログラムとして機能する。すなわち、"結果オーライ"のプログラムである。次にプログラムを示す。

REIA05の参考プログラム
REIA05の参考プログラム

 入力データに対する出力データを条件式で判断しているだけである。

 

 BASICプログラミング

 

inserted by FC2 system