Also wenn ich deine Antwort richtig verstanden habe, denkst du, dass der Taster nur einmal Abgefragt wird und danach nicht mehr...

Das Programm ist aber so geschrieben, das durch StartSwitch() ein Interrupt Befehl eingeleitet wird, der, sobald ein Taster gedrückt wird, die variable switched auf True stellt. Somit fängt sich der Asuro in der while(!switched); Schleife, bis ein Taster gedrückt wurde und fragt danach nurnoch mit PollSwitch() ab auf welcher Seite die Taster gedrückt worden sind, um entsprechend auszuweichen.

Bevor er sich in der while(!switched) Schleife fängt wird jedoch mit MotorDir und MotorSpeed die Drehrichtung auf vorraus gestellt.
Der Motor fährt dann auch kurz geradeaus aber dann will er wieder ausweichen, obwohl kein Taster betätigt wurde.