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

何気なく使っていましたがPIC(16F)のPIN変化割り込みの使い方についてです。このPIN変化割り込みは1→0でも0→1でも検出ができるようですが使い方として一度PORTBをWに読み出す(MOVF PORTB,W)必要があるのでしょうか。
読み出すことで変化前の設定値とするということのようですが。

本題(?)ですがスイッチでON,OFFする場合にON時とOFF時を検出したい場合(割り込み発生)スタート前(初期状態:OFF:1)にPORTBをWに読み込み初期値を設定しスイッチがON(0)になり割り込み発生。
今度OFFを検出する場合にはこのONの状態でPORTBをWに読み込み復帰することでスイッチのON→OFF,OFF→ONを検出が可能という事で処理は良いのでしょうか?
本にはあまりPIN変化について載っていませんので詳しく使い方がわかりませんです。よろしくお願いします。

A 回答 (1件)

この割り込みはポートが変化すると割り込みフラグが立つようになっています。


割り込みが許可されていれば割り込みが発生しますがそのままでは割り込みフラグはクリアされないのでそのまま割り込みから抜けると再度割り込みが発生します。
割り込みフラグをクリアするためにはPORTBを読み出す必要があります。

割り込み前の状態を覚えておいて割り込みの中ではどう変化したかによって処理を行うのが良いでしょう。
ポートの変化(例えば1→0→1)が短時間で発生すると割り込みがあったのに変化がないように見える事があります。
割り込みの中で読んだポートの値は次の割り込みで変化をチェックするため記憶しておきます。

割り込み処理が長くなるようであればフラグを立てておいて割り込みの外で処理をするのが良いでしょう。
    • good
    • 0
この回答へのお礼

頭の中で考えても実際にやってみると割り込みが連続して発生してしまいますね。フラグのクリアが上手くないのでしょうか。
処理の仕方も問題ありそうです。
回答ありがとうございます。

お礼日時:2009/03/18 22:31

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