Die Interrupt Service Routine isr_**** schlägt alle 250µs zu.

teiler zählt immer von 0 bis 3 und bewirkt dadurch im Endeffekt eine softwaremässige Verviefachung dieser Zeit auf 4*250µs = 1ms.
Das gleiche für tsek mit einem Faktor 1000.
Dadurch wird P1 = ~P1 ; nur 1x pro Sekunde aufgerufen.
~ steht für 'not', d.h. alle Bits an dem Port werden umgedreht, wodurch die LED blinkt im 1s - Takt, also mit 1/2 Hz.

tsek und teiler sind übrigens keine lokalen Variablen, sondern mindestens im ganzen Modul bekannt.

Initialisieren kann man die auch so:

char teiler = 0;
int tsek = 0;

dadurch spart man etwas Programmcode. Dann müssen auf der rechten Seite der Initialisierung allerdings Konstanten stehen.