Deine Wait-Funktion müsste etwa so aussehen:

- Nötigen Timer-Wert berechnen (sofern unterschiedliche Wartezeiten möglich sein sollen)
- Wert in den Timer laden
- Timer starten (Timer zählt jetzt von diesem Wert an aufwärts)
- In einer Schleife warten, bis das Timer-Overflow-Flag gesetzt ist
- Timer anhalten
- Overflow-Flag löschen

Den Interrupt brauchst du nur, wenn das Programm in der Wartezeit etwas anderes erledigen soll. Allerdings wird es dann deutlich komplexer.

PS: Ich sehe aber nicht, welchen Vorteil das gegenüber den Delay-Funktionen haben soll. Oder meinst du vielleicht eher sowas wie einen Timeout?