PIC初心者用掲示板

PICの初心者用の質問箱です。
何でもお気軽にどうぞ!

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 5961. 割り込み処理 [PIC未熟児] 2005/08/25 09:53
    ┗ 5962. Re: 割り込み処理 [CHOBI] 2005/08/25 10:11
    ┗ 5963. 投稿者削除 [ ] 2005/08/25 10:33
    ┗ 5964. Re: 割り込み処理 [新参者] 2005/08/25 10:36
        ┗ 5966. Re: 割り込み処理 [PIC未熟児] 2005/08/25 11:06
    ┗ 5968. 投稿者削除 [ ] 2005/08/25 13:02
        ┗ 5969. Re: 割り込み処理 [PIC未熟児] 2005/08/25 13:23


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
こんなのあるんですね。知らなかった...
ありがとうございました。