if else文
ドットマトリクスLEDを3個のスイッチで切り替えて点灯できるようにしたいのですが、うまく動作できません。プログラムのPORTA、C,D,EのところでLEDが点灯する形を決めています。
PORTB0,1,2でスイッチの制御をしています。
たぶん if~else のところがおかしいと考えているのですがいろいろ調べたのですが原因がわかりません。
何か解決のヒントでも気になったとこでもいいのでよろしくおねがいします。
#include<pic.h>
__CONFIG,_CONFIG1 , _DEBUG_ON , _LVP_OFF , _FCMEN_OFF , _IESO_OFF , _BOREN1_OFF , _BOREN0_OFF , _CPD_ON , _CP_ON , _MCLRE_ON , _PWRTE_OFF , _WDTE_ON , _FOSC2_OFF , _FOSC1_ON , _FOSC0_OFF;
__CONFIG,_CONFIG2 , _WRT1_ON , _WRT1_ON , _BOR4V_OFF;
void ioport(void);
void main()
{
ioport();
while(1)
{
if(RB0 == 0)
{
PORTA = 0b111000;
PORTB = 0b00000111;
PORTD = 0b11111110;
PORTC = 0b11111111;
PORTE = 0b001;
break;
}
else if(RB1 == 0)
{
PORTA = 0b111000;
PORTB = 0b00000111;
PORTD = 0b11111100;
PORTC = 0b00111111;
PORTE = 0b001;
break;
}
else if(RB2 == 0)
{
PORTA = 0b111000;
PORTB = 0b00000111;
PORTD = 0b10101010;
PORTC = 0b01010101;
PORTE = 0b001;
break;
}
else
{
PORTA = 0b111000;
PORTB = 0b00000000;
PORTD = 0b11111111;
PORTC = 0b11111111;
PORTE = 0b001;
break;
}
}
}
void ioport(void)
{
TRISA = 0;
TRISB = 0b00000111;
TRISC = 0;
TRISD = 0;
TRISE = 0;
}
お礼
ありがとうございます。 そうなんですね。つい癖で使いそうですが、 気をつけたいと思います。 ありがとうございました。