当ブログをご覧いただき、ありがとうございます。
ご注意事項:
記載内容には、十分注意しておりますが、勘違い、記憶違い、理解不足、思い込み等が無いとは限りませんので、申し訳ありませんが、 記載内容の正確性は保障致しません(出来ません)。
従いまして、このブログの内容を参考にする事に起因して生じる、または 生じた、いかなる事態にも、当方は何の責任も取れませんので、 参考にされる場合は、自己責任にてお願い致します。
このブログのC言語に関する説明には、PICで電子工作するのに必要な事柄以外(私のレベルで)は出てきません、出てこないことの方が多いと思いますので、ご了承願います。

PICの、入力を使う、スイッチでの入力の2回目。

前回の続きです。

 

前回は、プッシュスイッチの入力で、LEDの点灯と消灯をコントロールするのに、アクティブローとアクティブハイがあるのを勉強したのですが、今回はその応用です。

 

前回の回路は、

入力、出量共、アクティブローの回路。

入力、出量共、アクティブハイの回路。

上の2回路では、入力と出力は、共に同じタイプの回路でしたが、状況によっては入力と出力は、別タイプの回路のほうが良い場合もあるとの事で、下のような回路があります。

入力がアクティブローの回路で、出力がアクティブハイの回路

入力がアクティブハイの回路で、出力がアクティブローの回路

上の回路のように、入力と出力は、別タイプの回路になっています、このような回路でプッシュスイッチを押したときに。LEDが点灯するようにするには、前回組んだプログラムを変更して対応します。

前回のプログラムは、

でした、このプログラムは、入力の状態をそのまま出力しているのを、永久に繰り返しています。

対応するには、入力がハイの時、出力がロー、または、入力がローの時、出力がハイになるようにすれば解決できそうです。

つまり、入力と出力が反対になるように、入力を否定して出力すればよいようです。

従って、上のプログラムの31行目の、INdeta=RA0 を INdeta=!RA0  の様に変更すれば良いと思います。

修正したのが上のプログラムです、早速実験いたしました、結果は、スイッチを押した時LEDが点灯しました、動画的には、前回と同じなので割愛します。

 

追補;

上の2つのプログラムですが、31行と32行の所は、下のプログラムの31行の様にRB0へRA0を直接入れて、28行をなくしても同じ動作です。