In deiner Funktion Waitms läufst du 1000 mal durch eine For-Schleife, die delay_loop_2(4) ausführt. Der Fehler durch die zusätzliche Zeit, die die Schleife benötigt(könnte man ja testweise mal messen), ließe sich geringer halten, wenn du 100mal delay_loop_2(40) nähmest(ich glaube, du könntest sogar ganz ohne for delay_loop_2(4000) schreiben(die Variante, die bei GCC dabei ist, hat int als Parameter.).).