tommyと申します。初投稿になります。宜しくお願い致します。
LEDの点滅状態とLEDの消灯状態の切り替えをSWで行うプログラムを
制作しています。私の制作するプログラムのイメージとして、SWを押したら点滅、もう一度押したら消灯という形でif文で分岐させようと考えています。
コンパイルやビルドはエラーがないのですが、マイコンに書き込むとLEDだけがずっと光っている状態になってしまいます。(SWを押しても反応しない)
PORT番号での書き込みや、割り込み処理での対応も試してみたのですがどれもうまくいきません。
どのような考え方をすればよいかどなたかご教授頂けると幸いです。
以下、記述したプログラムになります。
void main(void){ //制御周期の設定[単位:Hz 範囲:30.0~] const BYTE MainCycle = 60; Init((BYTE)MainCycle); //CPUの初期設定 //I2C_init(void); //IXBUS初期化 //IO.PDR6.BIT.B4 = 1; //緑のLED消灯 //IO.PDR6.BIT.B0 = 1; //オレンジのLED消灯 if(getSW()){ //ループ while(1){ IO.PDR6.BIT.B0 = 0; IO.PDR6.BIT.B4 = 0; //LED両方点灯 Wait(1000); //1000msec待つ
IO.PDR6.BIT.B0 = 1; IO.PDR6.BIT.B4 = 1; //LED両方消灯 Wait(1000); //1000msec待つ } } else{ IO.PDR6.BIT.B4 = 1; //緑のLED消灯 IO.PDR6.BIT.B0 = 1; //オレンジのLED消灯 }}
tommy_ice said:LEDだけがずっと光っている状態になってしまいます。
ソースを見るとそうなっていますから
ここでソース見本を展開してしまうと勉強になりませんから
一つの間違いだけを指摘しましょう
tommy_ice said:while(1){
の位置が違います。
while文にif文else文を入れたところ正常に動きました。
ありがとうございます。