2023.5.23
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第25回]



●BIT()

前回はPICレジスタやIOポートなどのビットセット、リセット用の命令SET、RESについて説明しました。
今回説明するBIT()はその逆の動作をします。
レジスタやI/Oポートの特定の1ビットの状態を確認します(PICの場合にはI/Oポートを含めてすべてレジスタですけれど)。
SET、RESは命令ですが今回のBIT()はその前に紹介しましたAND()、OR()、XOR()と同じ関数です。
AND()、OR()、XOR()の値は8ビットでしたがBIT()は結果によって1または0の値をもちます(値は1と0だけですがビット数は8ビットです)。

BIT()の書式です。

BIT(r,b

rは8ビットの変数です。
通常の変数のほかI/OポートのTRISXやPORTXなどのSFR(特殊関数レジスタ)も指定することができます。
bはビット位置を示す0〜7の範囲の数で変数や式で示すこともできます。
rレジスタの値のうちbビットの状態を1または0で示します(rの値は変化しません)。

下はBIT()を使った最も簡単なテストプログラムです。

変数aの値は$55(’01010101’)です。
aのビット0は’1’ですからBIT(a,0)の値は1になります。

上と同じですが今度はビット1を指定しました。

aのビット1は’0’ですからBIT(a,1)の値は0になります。

ビット指定の値を0から7に順に変えながらBIT(a,n)を実行するプログラムです。

nが0から7に変わっていくのに伴ってnで示されるaのビットの値が変数bに入ります。

同じことをPORTCに対して行なってみました。

BIT()をI/Oポートに対して使うときは主にI/Oポートのビット入力の状態を確認するために使うことが多いと思いますから本来はPORTCを入力に設定したうえでBIT(PORTC,n)のように使うべきです。
しかしそうするためにはPORTCの外に別の出力回路を接続してその出力を変化させながらテストを行なうことになってちょいと手間がかかります。
そこで手抜きですが前回と同様にLATCに出力した値をBIT()で読むプログラムにしました。
前回と違ってPORTCの出力は変化させませんから今回はLATCの代わりにPORTCを使っても構いません。

ということでLATCの代わりにPORTCを使いました。


PICBASICコンパイラ[第25回]
2023.5.23upload

前へ
次へ
ホームページトップへ戻る