皆の助けを借りて私のコードを再編集しました。私は私の質問を更新しました:どのようにスイッチの構造を使って状態を増やすことができますか?スイッチ(expr)の[(button_in & 0x0040)!= 0)]式を入れました。これは、私が最初に望んでいた2つの州を私に与えました。 (1)ボタン1を押すと0001が得られます。(2)ボタン2を押すと0010が得られます。プログラムの仕方がわかりません0010を得るためにボタン2を押してください。ヒントや正しい方向のポイントを使用できます。私は一日中この作業を続けており、問題はスイッチの表現に関連していると感じています。Cでif elseをスイッチに変換する
int main()
{
char state;
char A;
int button_in = 0;
DeviceInit(); //set LED1 thru LED4 as digital output
DelayInit(); //Initialize timer for delay
while(1)
{
button_in = PORTReadBits (IOPORT_A, BIT_6 | BIT_7);
if (button_in != 0)
{
switch ((button_in & 0x0040) != 0)
{
case 0: ((button_in & 0x0040) != 0); //1. Press button1. State goes to 001.
PORTWrite (IOPORT_B, BIT_11);
break;
default: //((button_in & 0x0080) != 0); //2. Press button2. State goes to 010
PORTWrite (IOPORT_B, BIT_10);
break;
}
DelayMs(100);
PORTClearBits(IOPORT_B, BIT_10 | BIT_11 | BIT_12 | BIT_13);
//Add Breakpoint here
}
}
}
デバッグの助けを求める質問望ましい行動を含める必要があり、特定の問題やエラーや問題自体でそれを再現するために必要な最短コード(「なぜこのコードは動作しないの?」):それはこのように書きます。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – Olaf
'switch()'と最初の 'case'の間のステートメントは実行されません。なぜなら、' switch'が一致する 'case'ステートメントに直接ジャンプするからです。 – Barmar
したがって、 'button_in'を設定しません。 – Barmar