Falls es je,anden interessiert:
So sieht jetzt mein Timer aus:

So in der asuro.c
Code:
unsigned volatile char count72kHz;
unsigned volatile int  countkhz,countmsek,countsek;
/* uses timer2 (36kHz for IR communication */
/* counts falling and rising edge => 36kHz*2 = 72kHz */
SIGNAL (SIG_OUTPUT_COMPARE2)
{
	count72kHz ++;
	countkhz ++;
	if (countkhz == 72)
		{
		countmsek++;
		countkhz = 0;
		}
	
	if (countmsek == 1000)
		{
		countsek++;
		countmsek = 0;
		countkhz = 0;
		}
}
und im Hauptprogramm wird das folgendermaßen benutzt:

Code:
#include "asuro.h"
#include "Funktionen.h"	

int main(void)
{

Init();
	countsek=0;
	while (countsek<10)
		{
		StatusLED(RED);
		WaitM(100);
		StatusLED(GREEN);
		WaitM(100);
		}
	
	StatusLED(OFF);
	WaitS(1);
	
	countkhz=0;
	countmsek=0;
	countsek=0;
	while (countsek<5) 
		{
		StatusLED(GREEN);
		WaitM(500);
		StatusLED(RED);
		WaitM(500);
		}

	StatusLED(OFF);
	
	while(1);
	return 0;
}
Das bewirkt, dass die StatusLED 10 Sekunden lang schnell bilinkt und danach 5 Sekunden lang langsamer.