Dein Code hat noch ein paar andere Probleme.

Wieso ist ende in der Funktion pause 16 Bit groß, wo doch zaehler 32 Bits hat? Wie soll die Funktion irgendetwas Sinnvolles machen, wenn zaehler gerade größer als 65536 ist? Und wenn du ende auf 32 Bit änderst, hast du immer noch das Problem, dass die Funktion einen Überlauf nicht berücksichtigt.

Wieso soll dauer einen 32 Bit Wert zurückgeben, wo doch dem Code nach anscheinend die maximale Dauer auf 16 Bit beschränkt sein soll (und effektiv auch nur ein 16 Bit Wert zurückgegeben wird)?

Und wenn beides (Pause und Dauer) auf maximal 16 Bit beschränkt sein soll, warum ist dann zaehler überhaupt 32 Bit groß? 16 Bit würden dann auch reichen.