0869774ワット発電中さん
2019/09/07(土) 16:59:33.69ID:C2iktJD4以下の3つに分けて考えましょう。
1. main()
2. タイマー割込
3. 関数
1. main()は、細かいことは書かないで「装置全体の動作の流れ」がわかるように書くと良いです。
2. タイマー割り込みは、いろいろできますが、多重割り込みになると面倒ですので、
サッと抜けるような処理だけ書きましょう。
時間は、1msで行けると思います。(PICは楽勝。アルデーノは知らない)
3. 関数
main()で使用する関数の中身を書きましょう。
こんな感じです。
interrupt_timer....(){
count++
}
void main(){
st = 0;
while(1){
if( st==0 ){ // 0のとき
init(); st=1; // 初期化して、1へ
} else if( st==1 ){ // 1のとき
if( SW1==on ){ // SW1が押されたら
LED1=on; LED2=off; LED2=off; // LEDをセットして
fprintf(xx, "Get1 \r\n"); // シリアルで送信して
st = 2; // 次へ
} else if( SW2==on ){ // SW2が押されたら、
LED1=off; LED2=on; LED2=off; // LEDセットして
Mootor_L( on ); // モーター回転on
count = 0; // 時間カウンタreset
st = 3; // 次へ
}
} else if( st==2 ){ // 2のとき
if( count > 800 ){ // 800ms経ったら
st = 3; // 次へ
}
} else if( st==3 ){ // 3のとき
if( SW_stop==on ){ // StopSWが押されたら
fprintf(xx,"STOP....\r\n"); // シリアル送信して
Mootor_L( off ); // モーター回転off
st = 1; // 1へ戻る
}
}
}
}