Das Programm muss jedesmal mit einer "wait oder waitms-Anweisung" so lange angehalten werden, bis das Servo seine Zielstellung erreicht hat.
Wozu das denn ?
Wenn es wirklich nicht anders geht, könntest Du einen Controller mit PIN Change Interrupts verwenden und an die entsprechenden Eingänge deine Reed Kontakte hängen.

Anderer Vorschlag:
Normalerweise sollte es aber reichen, wenn Du einen Timer mitlaufen lässt, der in seinen Overflow Interrupts ein Register hochzählt.
Ist dann die gewünschte Zeit vergangen ( Das Register hat den gewünschten Zählerstand erreicht ) , kann man im Hauptprogramm in eine neue Subroutine gehen oder sonstwas machen.

Während der Timer läuft wird aber die Programm Hauptschleife trotzdem ständig durchlaufen.