- ベストアンサー
MPLAB IDE v7.52におけるシミュレーション方法
現在MPLAB IDE v7.52を使ってPICのプログラミングをしています。 コンパイルは通ったのですが、シミュレータの使い方が分からず、 実際に思ったとおりに動いてくれるか確かめられません。 どなたかMPLAV IDE v7.52のシミュレータの使い方が詳しく載ってるサイトがあったら教えていただけないでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
この辺を参考にしてみては? ちょっとなれるまで難しいかもしれませんが,慣れてしまえばそれほど難しい機能ではありません。 使いこなせばかなり有用なツールなので,うまく使いこなしてみてください。
お礼
ありがとうございます。 早速試してみようと思います。
補足
BreakPointを設定し、入力の設定もできるようになったのですが、 Runで実行してみると毎回ループ途中でRunのカーソルが動かなくなってしまいます。また、stimulusでRB6をSetHighにしたのですが、go to文が無視されてしまいます。これはプログラムがおかしいのでしょうか。一応コンパイルは通ったので文法は問題ないと思うのですが・・・。 プログラム初心者なので、見苦しいかもしれませんが以下がソースです。 #include<p30f2012.h> void main(void) { unsigned i, j, a, b, c, d, cnt; TRISBbits.TRISB0 = 0; TRISBbits.TRISB1 = 0; TRISBbits.TRISB2 = 0; TRISBbits.TRISB3 = 0; TRISBbits.TRISB4 = 0; PORTBbits.RB4 = 0; PORTBbits.RB0 = 1; PORTBbits.RB1 = 1; PORTBbits.RB2 = 1; PORTBbits.RB3 = 1; TRISBbits.TRISB6 = 1; TRISBbits.TRISB7 = 1; TRISBbits.TRISB8 = 1; TRISBbits.TRISB9 = 1; for(i=0;i<2;i++){ for(j=0;j<2;j++){ ; if(PORTBbits.RB6 ==1 || PORTBbits.RB7 ==1 || PORTBbits.RB8 ==1 || PORTBbits.RB9 ==1) goto _exit; } } while(1){ for(i=0;i<2;i++){ for(j=0;j<2;j++){ ; } } PORTBbits.RB0 = ~PORTBbits.RB0; PORTBbits.RB1 = ~PORTBbits.RB1; PORTBbits.RB2 = ~PORTBbits.RB2; PORTBbits.RB3 = ~PORTBbits.RB3; if(PORTBbits.RB6 == 1 || PORTBbits.RB7 ==1 || PORTBbits.RB8 == 1 || PORTBbits.RB9 ==1) break; } while(1){ _exit:; cnt = 0; while(cnt<10){ a = PORTBbits.RB6; b = PORTBbits.RB7; c = PORTBbits.RB8; d = PORTBbits.RB9; for(i=0;i<2;i++){ ; } if(a == PORTBbits.RB6 || b == PORTBbits.RB7 || c == PORTBbits.RB8 || d == PORTBbits.RB9 ) cnt++; else cnt = 0; } if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 0 || PORTBbits.RB8 == 0 || PORTBbits.RB9 == 0){ PORTBbits.RB0 = 0; PORTBbits.RB1 = 1; PORTBbits.RB2 = 1; PORTBbits.RB3 = 1; } else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1 || PORTBbits.RB8 == 0 || PORTBbits.RB9 ==0){ PORTBbits.RB0 = 0; PORTBbits.RB1 = 0; PORTBbits.RB2 = 1; PORTBbits.RB3 = 1; } else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1 || PORTBbits.RB8 == 1 || PORTBbits.RB9 == 0){ PORTBbits.RB0 = 0; PORTBbits.RB1 = 0; PORTBbits.RB2 = 0; PORTBbits.RB3 = 1; } else if(PORTBbits.RB6 == 1 || PORTBbits.RB7 == 1 || PORTBbits.RB8 == 1 || PORTBbits.RB9 == 1){ PORTBbits.RB0 = 0; PORTBbits.RB1 = 0; PORTBbits.RB2 = 0; PORTBbits.RB3 = 0; } else { a = PORTBbits.RB6; b = PORTBbits.RB7; c = PORTBbits.RB8; d = PORTBbits.RB9; PORTBbits.RB4 = 1; for(i=0;i<2;i++){ for(j=0;j<2;j++){ ; } } PORTBbits.RB4 = 0; while(1){ for(i=0;i<2;i++){ for(j=0;j<2;j++){ ; } } PORTBbits.RB0 = ~PORTBbits.RB0; PORTBbits.RB1 = ~PORTBbits.RB1; PORTBbits.RB2 = ~PORTBbits.RB2; PORTBbits.RB3 = ~PORTBbits.RB3; if(a != PORTBbits.RB6 || b != PORTBbits.RB7 || c != PORTBbits.RB8 || d != PORTBbits.RB9 ) break; } } } } RB0~3がLED, RB4がブザー, RB6~9がスイッチです。