Genau für diese Aufgabe gibt es Timer und Interrupts. Über Timerinterrupts kann man Aufgaben zu recht genau definierten Zeiten Ausführen lassen. Insbesondere addieren sich dabei kleine Fehler nicht auf, weil die Zeit unabhängig per Hardware läuft. Damit kann man dann auch mehrere Motoren unabhängig laufen lassen.

Ein mögliche Form wäre es die Schrittmotorsteuerung komplett den Interrupt zu verlegen. Für das Hauptprogramm kann das dann so aussehen als hätte man einen unabhängigen Controller für die Schrittmotoren, dem man nur noch sagen muss, wo der Motor hin soll, und ggf. wie schnell. Nach jedem Schritt wird die Zeit für den nächsten Schritt berechnet und der Timer (als eine Art Wecker) entsprechend gesetzt das dann der nächste Interrupts auftritt. Auch werden die schon gemachten Schritte mit gezählt um zu sehen ob das Ziel schon erreicht ist.

Richtig gemacht sollte dabei keine Warteschleife mehr auftreten und die Zeiten allein durch den Timer bestimmt werden.