Ich mach das so, daß ich den Timer0 für eine Zeit einstelle, die für alle zeitabhängigen funktionen zweckmäßich ist. Dort findet auch diese Zählerei statt. da komm ich meistens mit 1 - 10 mS aus.
(ganz genau genommen ist da eine TImer-queue, in die irgendwelche Funktionen zur runtime dann Entries machen, mit anzahl ticks, wann ein Callback erfolgen soll. Fast wie im Windows)
Die eigentliche Hauptschleife strudelt ohne wait ihre übrigen states ab und tut halt, was sie tun soll.)
Das "Wait" in der vorgeschlagenen Form ist nur, weil ja im Beispiel sonst nix zu tun ist.