プロが教える店舗&オフィスのセキュリティ対策術

PICのプログラムは実行させると、永遠にmain関数がループするようになっていると思うのですが、それを抜け出すにはどのようにしたらいいでしょうか?
例えば
#include <pic.h>

void main(void)
{
int a,b;
a=1;

if(a == 1)
????????//main脱出したい
}

?の部分をどのように書けば脱出できますか?

A 回答 (2件)

一般的には、main が無限ループするようにはなっていないと思います。


ただ、普通は、main() の中で、無限ループにはしますが。

あと、マイコンの仕様によっては、プログラムしていない範囲のプログラムメモリの内容を勝手にプログラムだと判断して実行したあげく、リセットがかかってしまう(と、一見無限ループしているように見える)場合はありますが。

単に動作を止めたいのであれば、その箇所で無限ループさせればいいのですが。

while(1);

とか。

本当に main() を抜けたいのなら、何も書かなくて良いです。そのまま、メインの下端から抜けます。
ただし、その後はどうなるかわかりません。たまたま(再度リセットがかかって)無限ループしているように見えるかも知れません。

途中から抜けたいのであれば、 return; でいけるかも知れません。これは、スタートアップが、main() への制御をサブルーチンコールで移しているか、ジャンプで移しているかで、動きが変わります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/27 12:17

メインループを抜ける=終了


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

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

お礼日時:2006/01/27 12:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!