• 締切済み

PIC16F193X割り込み時の退避・復帰処理方法

ICマイコンでの割り込み処理について、16F193Xの型番では割り込み発生時における退避・復帰が自動的に行われると認識しているのですが、下記型番では以前の様に wレジスタ、status,PCLATh等のレジスタを退避・復帰をプログラムで保存しておく必要がなくなったということでしょうか? 使う割り込みはタイマー割り込み(timer0)とし、割り込処理中の割り込みは禁止とした場合 因みに割り込みは以下の様に発生させ ////////////////////////// org   0 goto start org 4 goto INTLAP ////////////////////////// INTLAP BCF INTCON,2 INCF TES_CNT,1 RETFIE 割り込み処理中にTES_CONのレジスタ内容をPORTAの出力pinをオシロスコープで観察できる簡単なプログラムで走らせると動作していることが確認できましたが、退避・復帰が行われているかは不明です。 他に自動退避・復帰を確実に実行するためのプログラム等の操作を怠っていないでしょうか? 初心者で認識が誤っていないのか判断が出来ません。 対象型番 PIC16F1933 ? PIC16F1934? PIC16F1936 ? PIC16F1937? PIC16F1938 ? IC16F1939 PIC16F193X/LF193Xデータシート記述より(P71,72) 〇「このデータシートに記載されているデバイスRETFIE 命令では、割り込み前に実行していたアドレスをスタックから取得し、シャドウ レジスタから保存した内容を回復し、GIE ビットをセットすることによって、ISR から通常動作に復帰します。」 内容保存機能 〇「割り込み動作に遷移する際、復帰時の PC アドレス値がスタックに保存されます。また、次に示すレジスタ値も自動的にシャドウ レジスタに保存されます。 ・W レジスタ ・ ステータス レジスタ (TO および PD を除く) ・BSR レジスタ ・FSR レジスタ ・ PCLATH レジスタ 割り込みサービス ルーチンから通常動作に戻るとき、自動的にこれらのレジスタ値が回復されます。 とあります。

みんなの回答

回答No.1

古い^^PIC16F88時代しか知らないんですが^^ 早い話が INTベクター内で inc w してみればわかるんじゃないかな。 で、メインループで mov w,何か lp: cmp w,何か jz lp 命令忘れたので、ニモニックはそれっぽくしてください^^ 外部で変更されるなら、このループは終わるはず! どっちにしても”F"チップなので、1回くらい実験しても 損はないでしょう^^FはFlashですし。 あと、インタープリターや二モニックテスターで 動作確認してみるのも手ですね。 私が使ってた頃の、PICってスタックがそうじゃなくて ハードウエアスタックって言う、割り込み専用のが ついてたので、そもそも、戻りアドレス(セグメントと) しかなかったですからね~数も固定で4~8程度 なので、ちょっと今のPICはわからないかなって所です。 後半Scenixに浮気したもので(笑)今はもうなくなりましたけどね。 高速互換PICチップ。。

natukun1234
質問者

お礼

遅れましたがご回答ありがとうございます。