• ベストアンサー

PIC のプログラムについて どうすれば終了できますか?

PICのプログラムは実行させると、永遠にmain関数がループするようになっていると思うのですが、それを抜け出すにはどのようにしたらいいでしょうか? 例えば #include <pic.h> void main(void) { int a,b; a=1; if(a == 1) ????????//main脱出したい } ?の部分をどのように書けば脱出できますか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

一般的には、main が無限ループするようにはなっていないと思います。 ただ、普通は、main() の中で、無限ループにはしますが。 あと、マイコンの仕様によっては、プログラムしていない範囲のプログラムメモリの内容を勝手にプログラムだと判断して実行したあげく、リセットがかかってしまう(と、一見無限ループしているように見える)場合はありますが。 単に動作を止めたいのであれば、その箇所で無限ループさせればいいのですが。 while(1); とか。 本当に main() を抜けたいのなら、何も書かなくて良いです。そのまま、メインの下端から抜けます。 ただし、その後はどうなるかわかりません。たまたま(再度リセットがかかって)無限ループしているように見えるかも知れません。 途中から抜けたいのであれば、 return; でいけるかも知れません。これは、スタートアップが、main() への制御をサブルーチンコールで移しているか、ジャンプで移しているかで、動きが変わります。

pinoko1124
質問者

お礼

動作をストップさせたかったのでWhile(1)をつかって見ます。 ありがとうございます。

その他の回答 (1)

  • MASA_H
  • ベストアンサー率42% (64/151)
回答No.1

メインループを抜ける=終了 のような気がするのですが、何がしたいのですか? メインループを抜け別のループに入りたいなら別にほかにループを作ればいいですし。 電源断の様なことならソフトだけでは無理だったはず。

pinoko1124
質問者

お礼

エラーをセグメントに表示させてエラーになったらSTOPするプログラムを書きたいとおもっていました。いろいろアドバイスありがとうございました。

関連するQ&A

専門家に質問してみよう