スイッチ構成でどのように状態を増やすことができますか?私はカウントを必要とする+ +?私は[(button_in & 0x0040)!= 0)]式をスイッチ(expr)に置いた。これは、私が最初に望んでいた2つの州を私に与えました。 (1)ボタン1を押すと0001が出力されます。(2)ボタン2を押すと0010が出力されます。 プログラミング方法がわかりません0010を返すためにボタン2を押します。whileループ内にカウントを実装しますか? while式をカウントとして使用できますか?私はカスケードで別のループを配置する必要がありますか?私は自分の州を増やしたいと思う。 0000、0001(5セント)、0010(10セント)、0011(15セント)、0100(20セント)、1000(25セント)、0111(変更)の7つの州があります。 質問とコードを更新して、私の意図を明確に反映させました。 私はプログラマーではなく、私の友人は私がボタンを押すと言いました。私は現在の状態を確認する必要があります。そのために私のコードをプログラムしてください。彼はまたバイナリ計算機についても言及した。どの方法が最も効率的ですか?あなたがより一般的で読みやすくなります簡単なif
文でそれを置き換えることができますようおかげCスイッチ数を増やす場合
int main()
{
char A; //placed for switch expression... (not needed?)
int button_in = 0; // button is set for 0 (not-engaged)
DeviceInit(); //set LED1 thru LED4 as digital output
DelayInit(); //Initialize timer for delay
int count; //maybe required for 5 button pushes. Requesting help with this
while (1) //Can I initiate a count? for a second button push?
{
button_in = PORTReadBits(IOPORT_A, BIT_6 | BIT_7); //Button 1 and button 2 defined
if (button_in != 0) //if button is engaged utilize switch statement
{
switch ((button_in & 0x0040) != 0) //if button1 is engaged
{
case 0:
((button_in & 0x0080) != 0); //Statement: Button2 engages case0
PORTWrite(IOPORT_B, BIT_11); //State goes to 010 (BIT_11 lights up).
break;
default: ((button_in & 0x0040) != 0); //Statement: Button1 engages default.
PORTWrite(IOPORT_B, BIT_10); //This is state 0001 (BIT_10) lights up.
break;
}
DelayMs(100); //100millisecond delay for light shine
PORTClearBits(IOPORT_B, BIT_10 | BIT_11 | BIT_12 | BIT_13); //ClearLEDs
}
}
}
私は何が必要だと思うが、ステートマシン – Mobius