Code um einen Takt auszugeben

Kleinigkeit:
Du fragst beide Taster hintereinander ab. Wenn beide gedrückt werden überschreibt dir der zweiten den ersten. Das kannst du mit "else if" verhindern. Du solltest die Taster vielleicht auch mit Deounce entprellen. Funktioniert hier wahrscheinlich auch ohne, aber sicher ist sicher:

Wenn du beim Drücken merkwürdiges Verhalten hast und Dinge mehrmals ausgeführt werden liegt es daran. Aber da du ja gleich mit dem Motorschalten beginnst macht es wahrscheinlich nichts.

MotorState zu invertieren geht viel einfacher:
MotorState = !MotorState;

Das liegt daran wie die defines für HIGH/LOW gesetzt sind. Es geht wahrscheinlich weil man true/false auch als 1/0 schreiben kann