「赤外線リモコン受信2」の続きです。 最初に INT1 の割り込み設定をしますが、リセット直後で不定になっているワークの初期化を一緒に行っています。 <PICデバイス=18F1320> 受光モジュールは PL-IRM1261-C438 です。
以下は INT1 の設定とワーク初期化を行うアセンブラ・ソース( intdef.asm の一部)です。 INT1 は立ち下がりエッジで低位割り込みを発生するように設定し、ワークを初期化してから割り込みフラグをクリアして、割り込みを許可します。
81行目にサブルーチンコールがありますが、TIMER0設定値を 3bit 右シフトするサブルーチンです。 詳細は別の記事で紹介します。 INT1 の都度、TIMER0 を読み出して、前回のINT1割り込みからの時間を割り出しますが、前回と今回の間に TIMER0 のオーバーフローが発生している時に加味すべき定数を、79行目~87行目で計算しています。
上図の89行目では、下図のサブルーチン( ircr.asm の一部)をコールしています。 この部分は受信完了したコードに従ってメイン処理を行った後で赤外線リモコン受信を再開するときに使う為、サブルーチンにしています。
32bit の受信コードを書き出すワークを0クリアし、受信 bit 数カウンターに32を設定してリーダー受信待ちのフラグ設定を行った上で、割り込みフラグクリアと割り込み許可を行います。
赤外線リモコン受信の関連記事インデックスはこちら → 「赤外線リモコン受信」
関連記事の最後にプロジェクト一式をダウンロード可能にする予定です。
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。
以下は INT1 の設定とワーク初期化を行うアセンブラ・ソース( intdef.asm の一部)です。 INT1 は立ち下がりエッジで低位割り込みを発生するように設定し、ワークを初期化してから割り込みフラグをクリアして、割り込みを許可します。
81行目にサブルーチンコールがありますが、TIMER0設定値を 3bit 右シフトするサブルーチンです。 詳細は別の記事で紹介します。 INT1 の都度、TIMER0 を読み出して、前回のINT1割り込みからの時間を割り出しますが、前回と今回の間に TIMER0 のオーバーフローが発生している時に加味すべき定数を、79行目~87行目で計算しています。
上図の89行目では、下図のサブルーチン( ircr.asm の一部)をコールしています。 この部分は受信完了したコードに従ってメイン処理を行った後で赤外線リモコン受信を再開するときに使う為、サブルーチンにしています。
32bit の受信コードを書き出すワークを0クリアし、受信 bit 数カウンターに32を設定してリーダー受信待ちのフラグ設定を行った上で、割り込みフラグクリアと割り込み許可を行います。
赤外線リモコン受信の関連記事インデックスはこちら → 「赤外線リモコン受信」
関連記事の最後にプロジェクト一式をダウンロード可能にする予定です。
「楽々PIC」は楽しい道具を作りながら学ぶブログを目指します。