스위치 구성으로 어떻게 상태를 증가시킬 수 있습니까? 나는 백작이 필요합니까? 스위치 (expr)에 [((button_in & 0x0040)! = 0)] 표현식을 넣었습니다. 이것은 저에게 제가 의도 한 처음 두 주를주었습니다. (1) 버튼 1을 누르면 0001이됩니다. (2) 버튼 2를 누르면 0010이됩니다. 프로그래밍 방법이 확실하지 않습니다 0010을 얻기 위해 버튼 1을 두 번 누르십시오. while 루프 내에 카운트를 구현합니까? while 표현식을 개수로 사용할 수 있습니까? 계단식으로 다른 루프를 배치해야합니까? 나는 내 주를 키우고 싶다. 0000, 0001 (5 센트), 0010 (10 센트), 0011 (15 센트), 0100 (20 센트), 1000 (25 센트), 0111 (변경)의 7 가지 상태가 있습니다. 본인의 의도를 명확하게 반영하기 위해 질문과 코드를 업데이트했습니다. 나는 프로그래머가 아니며 버튼을 누르면 내 친구가 언급했다. 현재 상태를 확인해야합니다. 그런 다음 내 코드를 프로그래밍하십시오. 그는 또한 이진 계산기를 언급했다. 어떤 방법이 가장 효율적입니까? 감사합니다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
}
}
}
나는 당신이 필요로하는 것은 내가 처음부터 문하지만 나를 위해 너무 원활하게 작동하지 않은 경우 구현하려 상태 머신 (state machine) – Mobius