こんにちは。
PICマイコンで割り込みをやる場合、
MOVFはSTATUSのZフラグに影響を与えるので、
使わない、とありますが、
何故、MOVFでZフラグに影響を与えるのか、
どういう影響を与えるのか分かりません。
割り込みを使わなくても、STATUS<Z>を
条件判断に使っている限り、
MOVFは使えないのでしょうか。
また、
本によっては、
(割り込みのはじめ)
MOVWF W_TEMP
MOVF STATUS,W(*)
MOVWF ST_TEMP
~割り込みの内容
MOVF ST_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
(割り込み終わり)
のように書いてあり、
この場合、*で、
STATUSのコピー前(同時)に、
MOVFを使っていますが、
これは、OKなのでしょうか。
何か分かる人がいましたら、
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんばんわ。
>何故、MOVFでZフラグに影響を与えるのか、どういう影響を与えるのか分かりません。
MOVFでZフラグに影響が出るのは、PICの設計の思想の問題なのですが、とりあえず影響を与えると受け入れるしかありません。
割り込みは、いつ発生するか分りませんので全てのフラグとレジスタに影響を与えては行けません。割り込み開始時と同じ状況に復元して割り込み処理を終了する必要があります。
>割り込みを使わなくても、STATUS<Z>を条件判断に使っている限り、MOVFは使えないのでしょうか。
条件分岐とかで判断する前にMOVFを使うとZフラグ変わってしまいます。
以下の割り込みの開始処理の解説してみます。
MOVWF W_TEMP ;WレジスタをW_TEMPに退避。
MOVF STATUS,W ;STATUSレジスタをWレジスタへ。
MOVWF ST_TEMP ;STATUSレジスタをST_TEMPに退避。
で、この時のMOVFが問題ないのかって事だと思うのですが。
MOVFでZフラグが変化するのは移動後なんです。つまりレジスタの中身を移し変えた後で変化します。
なので、
MOVF STATUS,W
とすると元のSTATUSレジスタの内容がwレジスタに移されます。
その後にZフラグが変化しますが、wレジスタにあるSTATUSレジスタの内容はMOVF前のままって事になります。
えーと、分っていただけましたか?
分らなかったら、また補足などで質問してください。
回答ありがとうございます!!
大分、得した気分です。
MOVFでZが変わる理由がないこと(あっても
非常に本質的で難解なこと)。
MOVFで回避するのが先だから、
MOVF STATUS,Wが成り立つこと
(割り込みの最後は、
MOVWF STATUSで、STATUSを
戻しているので、MOVFが使えず、
SWAPFを使っていること)。
割り込み以外でもMOVFは問題と
なるが、通常は、STATUSのZを
チェックする
直前で、計算を実行しているので、
MOVFの入る余地がないこと。
すべて、解決しました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Arduinoに関する質問 4 2023/08/07 21:19
- メディア・マスコミ マスクしつづける方は 緊急事態条項・パンデミック条約について どう捉えていますか? 2 2023/03/21 11:44
- 医療・安全 マスクしつづける方は 緊急事態条項・パンデミック条約について どう捉えていますか? 8 2023/03/18 20:27
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- SOHO・在宅ワーク・内職 最近内職をしていますが、シンナーの影響が気になります。シンナーを使って作業されてる方はどういう対策を 4 2022/11/09 10:16
- ガーデニング・家庭菜園 【ミミズへの悪影響について】 うちの庭には 沢山のミミズがいて、 土壌改良の為に大切に、 ずっと見守 3 2023/01/15 15:27
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- Google Drive Googleドライブでのファイルの移動 2 2022/11/01 14:23
- その他(パソコン・スマホ・電化製品) LINUXPCに詳しい人に気楽に答えてほしい質問です。 2 2022/10/25 08:07
- 郵便・宅配 クロネコヤマトについて、持ち込み発送を簡単に済ませるには?(集荷と比べて面倒) 3 2023/02/08 23:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
pic 複数の割り込み関数 切り分...
-
一定時間操作がなかったら、と...
-
駅のトイレでナイチンに邪魔さ...
-
マイコン C言語 割り込み処理...
-
VB6でSendKeyを利用したTab移動...
-
volatileについて
-
USB機器からのデータ受信による...
-
PIC12F683から移植
-
列に割り込んだ上文句言うやつ...
-
ゾンビプログラム?
-
インバウンドで迷惑している人...
-
Data読出時のOSとのインタロック
-
実行した後、どうしてもフリー...
-
SH2 (SH7144)のソフトウェアス...
-
Macターミナルで実行中のプログ...
-
緯度、経度の 10進法と 60進法...
-
バックグラウンドのプロセスの...
-
C言語で、メモリを解放しないで...
-
TCP/IP通信時のサーバーからの受信
-
VBSで応答不要のメッセージボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インバウンドで迷惑している人...
-
pic 複数の割り込み関数 切り分...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
Excelでタイマーの一時停止する...
-
電車で待機列の割り込みについ...
-
CPUの処理量を減らすコーデ...
-
C言語でPICマイコン開発
-
【組込み】割り込み中のstatic...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
VB.net 割り込みの禁止
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
おすすめ情報