- 5961. 割り込み処理 [PIC未熟児] 2005/08/25 09:53
- アセンブリ言語でプログラムを作っています。
マイコンは16F877を使っております。
その中で、インターバルタイマとして使うために
割り込みをかけています。
割り込みルーチンに入った所で、
STATUSとWレジスタを退避させるために
bank0に退避レジスタを2つ設けました。
そこで質問なのですが、割り込みルーチンに入ったときは
bankがいくつになっているか判らないのですが、皆様はどの用に退避、復旧を行なっているのでしょうか?
- 5962. Re: 割り込み処理 [CHOBI] 2005/08/25 10:11
- >アセンブリ言語でプログラムを作っています。
>マイコンは16F877を使っております。
>その中で、インターバルタイマとして使うために
>割り込みをかけています。
>割り込みルーチンに入った所で、
>STATUSとWレジスタを退避させるために
>bank0に退避レジスタを2つ設けました。
>そこで質問なのですが、割り込みルーチンに入ったときは
>bankがいくつになっているか判らないのですが、皆様はどの用に退避、復旧を行なっているのでしょうか?
割込み --> 退避 --> 復旧 --> 復帰
の一連の流れでBANKの切替を行わなければ
BANK=00/01/10/11のいずれかに退避、復旧が
行われますね。
私はいい加減なのでBANK=01/10/11が空きの場合
はBANK=00にだけ退避レジスタ設置します。(^_^;)
BANK=01/10/11も使っている場合は、
BANK=00と同じ位置に退避レジスタ確保します。
- 5963. 投稿者削除 [ ] 2005/08/25 10:33
-
- 5964. Re: 割り込み処理 [新参者] 2005/08/25 10:36
- >アセンブリ言語でプログラムを作っています。
>マイコンは16F877を使っております。
>その中で、インターバルタイマとして使うために
>割り込みをかけています。
>割り込みルーチンに入った所で、
>STATUSとWレジスタを退避させるために
>bank0に退避レジスタを2つ設けました。
>そこで質問なのですが、割り込みルーチンに入ったときは
>bankがいくつになっているか判らないのですが、皆様はどの用に退避、復旧を行なっているのでしょうか?
レジスタ退避の格納先アドレスを 70h〜(7Fh)にしましょう。
それで懸案のバンク問題は解決します。
データシートのレジスタマップで確認してください。
- 5966. Re: 割り込み処理 [PIC未熟児] 2005/08/25 11:06
- レジスタ退避の格納先アドレスを 70h〜(7Fh)にすればいいんですね!
確かに、マップを見るとどのbankでも70h〜を見てくれますね。見落としていました^^;
解決できそうです。ありがとうございました!
- 5968. 投稿者削除 [ ] 2005/08/25 13:02
-
- 5969. Re: 割り込み処理 [PIC未熟児] 2005/08/25 13:23
- こんなのあるんですね。知らなかった...
ありがとうございました。