Die taste1 und taste2 wert sind nicht initialisiert. Im ersten 'fahren'-code gar nicht. Im zweiten code has du nur taste1 einer wert gegeben mit Pollswitch vor du ihn UND taste2 im while-Schleife header uberpruft. Man kan nicht darauf verlassen das einer Variabele einer sinnvoller wert hat am anfang von das program. Immer einer sichere wert eingeben beim deklarieren, oder gleich mit einer function einer wert zuweisen vordem eine logische entscheidung daruber gemacht wird..

unsigned char taste1=0;
unsigned char taste2=0;

Ich bin mich nicht sicher das folgende auch compiliert wird:

unsigned char taste1=0, taste2=0;