Wow - das sieht nach einem gigantischen Flieger aus

Ich wusste nicht, dass Du mit Print arbeitest. Dieser Befehl braucht immer ene ganze Zeit - und so wie der Code gerade ist, wird der Print-Befehl nach jedem (!) Impuls ausgeführt. Das heißt etwa 50 mal pro Sekunde. Das könnte problematisch sein.

Du könntest mal zwei Zähler etablieren (z.B. Z1 und Z2 als Bytes). In den Interrupt-Routinen lässt Du Z jedesmal um eins hochzählen, wenn ein Impuls fertig ist.

In der Hauptroutine könntest Du dann so dafür sorgen, dass z.B. nur nach jedem 50. Impuls grprintet wird. Also insgesamt etwa so:

Code:
...
...
Do

If Flag1 = 1 then
 Flag 1 = 0
 Impuls1 = Stop1 - Start1
  If Z1 = 50 then
   Print Impuls
   Z1 = 0
  End if
End if

(analog das gleiche für Start2, Stop2, Impuls2 und Z2)

Loop
...


Impuls1:

If Pind.2 = 1 Then
 Start1 = Timer2
Else
 Stop1 = Timer2
 Flag1 = 1
 Z1 = Z1 + 1
End If

Return 
...
...
Sonst fallen mir auf den ersten Blick keine Fehler auf...