dポイントプレゼントキャンペーン実施中!

PIC16F886を使っています。

すべての入力端子を監視して「もし~ms以上、入力端子に変化がなかったら」という条件文を作りたいのですが、どうすればいいのでしょうか。

何を作りたいかというと、電車のEB装置のようなものです。

一定時間操作がない場合には警告音を発し、それでも操作がない場合はプログラムをリセットするということです。

当方、PIC初心者なので条件文しか方法が思いつきませんが、このような動作をすれば何でも構わないです。


ご教授お願いします。

A 回答 (2件)

PICの仕様が不明ですが、通常は以下のようにすると思います。



・監視開始時に、タイマを開始します。その時に、監視するポートのエッジ割り込み(変化を検知したいので、立ち上がり、立ち下がり両方)を許可します。
・タイマ設定は計測する時間で満了するようにして、満了の際に割り込みが発生するようにします。
・ポートエッジ割り込みが入ったら、監視タイマを再度開始し直します。
・監視タイマが満了したら、警告音を発します。

擬似的にコードを書くと以下のようになります。

int main(void) {
タイマ設定
監視ポートのエッジ割り込み設定
タイマ開始

for(;;)
;

return 0;
}

/* タイマ割り込み */
警告音発報

/* エッジ割り込み */
タイマ開始
    • good
    • 0
この回答へのお礼

なるほど、、、
今頑張って書いてみてるのですが、なかなか難しいです(汗

でも、これは大変参考になります!

回答ありがとうございました!

お礼日時:2011/10/05 22:30

こんばんは。



1ms毎に起きるタイマー割り込みを用意しておき、
それをカウントしておき、ご希望のms(カウント数)に
到達する前に、状態変化割り込みで、そのカウンタを
クリアするようにすれば実現できるのではないですか。
※PIC16F886の場合はPORT_Bが
 状態変化割り込みに使えるでしょう。

なお、カウンターがカウントアップすれば、
その後、一定時間ブザーを鳴らせて
リセットベクターにジャンプすれば
いいだけでしょう。

特別な条件文なんて必要ありませんよ。
    • good
    • 0
この回答へのお礼

なるほど、、、割り込みですか。
頑張ってやってみようと思います。

回答ありがとうございました!

お礼日時:2011/10/02 20:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!