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?
Lesezeichen