Code:static uint8_t state = 0; // empfangenes Zeichen auslesen uint8_t buffer = UDR; switch (state) { case 0: if (buffer == '<') { state = 1; } else state = 0; break; case 1: if (buffer == 'C') { state = 2; } else state = 0; break; case 2: if (buffer == 'H') { state = 3; } else state = 0; break; case 3: if (buffer == '1') { state = 4; } else state = 0; break; case 4: if (buffer == '>') { PORTD = 0b11011111; PORTB = 0b11110111; // PORTB &= ~(1<<PB3); // PORTB |= (1<<PB4); // PORTD &= ~(1<<PD5); p_string = ch1; USR |= (1<<UDRE); } else state = 0; break; case 5: if (buffer == '2') { state = 5; } else state = 0; break; case 6: if (buffer == '>') { PORTD = 0b11111111; PORTB = 0b11101111; // PORTB |= (1<<PB3); // PORTB &= ~(1<<PB4); // PORTD |= (1<<PD5); p_string = ch2; USR |= (1<<UDRE); } else state = 0; break; default: state = 0; }
In case 3 prüft er ja, ob 1 kommt, und wenn nicht, geht er auf 0 zurück. D.h. ich komme nie in case 4 rein.
in case 3 das else state=0 entfernen hat mich leider auch nicht weiter gebracht.
Wie kann ich ihm bei bringe, dass er sowohl nach einer 1 als auch nach einer 2 ausschau halten soll, und dem entsprechend weiter vorgehen soll?
![]()






Zitieren

Lesezeichen