![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
INTピンを使ってsleepから割り込み復帰したいのですが、
思ったとおり動いてくれません。
メインをSLEEPにし、割り込みが入ると割り込み側の
プログラムを実行し、終わるとメインのSLEEPに
もどってINTの割り込みに備えるようにしたいのです。
現段階では割り込みをするとSLEEPから割り込み
には行くのですが、そのまま割り込み側のプログラムを
永遠に繰り返してしまいます。
listp=12f629
includep12f629.inc
RELOOP1equ0x20
CT_DELAYNMSequ0x21
PCLATH_TEMPequ0x2a
W_TEMPequ0x2b
STATUS_TEMPequ0x2c
stuequ0x2d
org0x0
gotostart
org0x4
;レジスタの退避
movwfW_TEMP
swapfSTATUS,W
clrfSTATUS
movwfSTATUS_TEMP
movfPCLATH,W
movwfPCLATH_TEMP
clrfPCLATH
;割り込み要因のチェック
btfssINTCON,INTF
gotoINT_NEXT1
;ここから割り込みプログラム
省略
INT_NEXT1
;レジスタの復帰
movfPCLATH_TEMP,w
movwfPCLATH
swapfSTATUS_TEMP,W
movwfSTATUS
swapfW_TEMP,F
swapfW_TEMP,W
retfie
;初期設定
start:
;aLED単独の輝度
bcfSTATUS,RP0
clrfINTCON
clrfGPIO
bsfSTATUS,RP0
clrfOSCCAL
clrfTRISIO
bsfTRISIO,2
movlwB'01000101'
movwfOPTION_REG
bcfSTATUS,RP0
;割り込み許可する
movlwB'11010000'
movwfINTCON
nop
sleep
nop
goto$-3
end
こんな感じのプログラムなのですが、INTピンからの割り込みと
いうことでプリスケーラなどは使っていません。
データシートも読んだのですが今市理解ができていない状況です。
お願いします。
No.2ベストアンサー
- 回答日時:
No.1
- 回答日時:
retfieを実行しても、戻らないということですが、
retfieを実行する直前のスタック・ポインタの内容はどのようになっていますか?
retfieを実行しても、戻らないということはその時点でのスタック・ポインタに戻りアドレスが格納されていないということではないでしょうか?
スタックの初期設定はされていないようです。
割り込みの中でレジスタを戻しているのは何故でしょうか?
通常はレジスタを割り込み中でセーブするために、退避させると思います。スタック・ポインタの内容を調査すべきと思います。
この回答への補足
ありがとうございます。
スタックポインタというのは特に設定しておりませんでした。
データシートのどの辺りをみればわかるのでしょうか?
レジスタの退避は参考書を写したものでほかの
プログラムで使ったときも、
このやり方で問題なく動作しておりますので
問題ないと思うのですが、、
念のため再確認しておきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読 4 2022/10/17 20:52
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# 配列の初期化についてです。 int 例のプログラムで int x[5]={1,2,3,4,5}; x 1 2022/05/29 15:00
- au(KDDI) iPhone 12 pro(au povo) から iPhone14(買い換えるならPro) に機種 7 2022/09/08 19:53
- 簿記検定・漢字検定・秘書検定 日商簿記2級の商業簿記の新株発行(増資)について質問です。 今、日商簿記2級の受けようと独学で宅建勉 1 2022/07/30 09:45
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- 教育ソフト・学習ソフト vbsで分割した値をそれぞれの変数に 1 2022/10/17 19:52
- 格安スマホ・SIMフリースマホ uqモバイル使用の方、割引の仕組みに詳しい方、教えてください・・ 2 2023/04/24 15:04
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CPU負荷率の安全な上限と計...
-
VB6でSendKeyを利用したTab移動...
-
PIC16F88 内部オシレータ使用...
-
USB機器からのデータ受信による...
-
コンピュータのベクタ番号について
-
PIC18F2550の割り込み処理について
-
割り込みのカウントの仕方
-
電車で待機列の割り込みについ...
-
一定時間操作がなかったら、と...
-
AVRマイコンの割り込みについて
-
割り込み処理について
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
-
駅のトイレでナイチンに邪魔さ...
-
割り込み処理から引数を取得す...
-
Macターミナルで実行中のプログ...
-
他のPC上にあるexeを、そのP...
-
バックグラウンドのプロセスの...
-
プロダクションコードとは?
-
DoEvents関数って何?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ショッピング
-
スーパーのレジで並んでいたら...
-
pic 複数の割り込み関数 切り分...
-
マイコン C言語 割り込み処理...
-
Amazonfireタブレットにわから...
-
CPUの処理量を減らすコーデ...
-
irqbalance って
-
CPU負荷率の安全な上限と計...
-
一定時間操作がなかったら、と...
-
電車で待機列の割り込みについ...
-
VB6でSendKeyを利用したTab移動...
-
(H8マイコン)タイマ割込で変更...
-
駅のトイレでナイチンに邪魔さ...
-
アセンブラのタイマー割り込み
-
PICのPIN変化割り込みに...
-
USJでの割り込み
-
H8マイコンで割り込みが任意の...
-
PIC16F84AのRBポート変化割り込...
-
AKI-H8/3048Fでのタイマ割り込み
-
H8マイコンでの割り込み(シリ...
おすすめ情報