@bloodyDragon: Freut mich, dass das Prinzip funktioniert.
Nepi hat deinen Fehler ja schon gefunden. (Und ich sehe gerade, dass du es schon umgebaut hast)

Mit dem Polling ist das so eine Sache.
Zum einen wird dein Hauptprogramm ja immer die berühmte while(1)-Schleife haben in der alles zum leben des Asuros getan wird.

Innerhalb dieser Haupt-Schleife prüfst du mit deiner Funktion tastenCheck() die Tasten. Das Ergebnis steht dir ja danach in der globalen Variable taste zur verfügung. (Bestimmt startes du darüber die Motoren um mal ein Stück geradeaus zu fahren.)
Wenn du zum Fahren z.B. die Funktion Go() aus der Lib (dank an stochri für die Funktion) benutzt, wirst du jetzt Pech haben mit den Tasten.
Die Go()-Funktion kommt nämlich erst dann in deine Haupt-Schleife zum nächsten Tastenlesen zurück, wenn die komplette Strecke gefahren wurde.

Hier wäre es nun deine Aufgabe die Go()-Funktion auch noch in eine Status-Maschine umzubauen, so dass auch sie zurückkommt nachdem sie sich z.B. 'nur' mal eben um das Geradeausfahren gekümmert hat. Ein weiterer Status in der Funktion müsste dann natürlich auch noch das erfolgreiche Abfahren der gewünschten Strecke anzeigen und bearbeiten.

Wäre bestimmt eine interessante Lösung für die Lib. Dann aber bitte auch gleich für die Turn()-Funktion

Falls du nicht Go() und/oder Turn() benutzt, würde es mich (und die anderen Helfer bestimmt auch) sehr stark interessieren was du bis jetzt komplett programmiert hast. Da bekommt man dann doch eher eine Übersicht was du so treibst und wo dann evl. geholfen werden kann.