Manche Sachen lassen sich schlecht vorhersagen, selbst wenn man den COde kennt. Wenn bei der RS232-Routine zB gwewartet wird, bis der Sender frei ist und das nächste Zeichen gesendet werden kann, ist diese Zeit nicht genau vorhersehbar. Und auch bei den If-Abfragen ist die Ausführungsdauer unterschiedlich, je nach Ergebnis...

In welcher Größenordnung liegt denn die maximale Impulsrate? Wie zählst du? externer Interrupt? Besser wäre, die Impulse direkt an einen Timer/Couter zu hängen, dann ist der Zählvorgang vollkommen unabhängig vom Rest des Programms...