Die Funktionen einfach ins Programm einfügen.
Um z.B. auf Kanal 1 zu schalten, schreibe:
fkt_rc5_senden(1);
oder um raufzuschalten:
fkt_rc5_senden(RC5_RAUF);

Mit fkt_rc5_empfangen() wartest du solange bis ein IR Signal erkannt wurde. Falls es sichum ein RC5 Signal handelte, wird dieser Rückgabewert zurückgegeben, z.B. 1 wenn Taste 1 gedrückt wurde.

Code:
#define RC5_KOMMANDOBITS 6
#define RC5_LEER 0x3000
#define RC5_LAUTER 0x10
#define RC5_LEISER 0x11
#define RC5_RAUF 0x20
#define RC5_RUNTER 0x21

unsigned char fkt_rc5_empfangen(void)
{

    unsigned char n=0,erg=0;

    DDRD &= ~(1<<PD0);
    PORTD|=(1<<PD0);


    while(PIND & (1 << PD0));

    Sleep(250);
    Sleep(250);
    Sleep(14);

    for(n=0;n<RC5_KOMMANDOBITS;n++)
    {
        if(PIND & (1 << PD0))
            erg |= 1<<(RC5_KOMMANDOBITS-n-1);

        Sleep(64);
    }

    return erg;
}

void fkt_rc5_senden(unsigned char kommando)
{
	unsigned char n=0;
	unsigned int daten=0;
	daten = RC5_LEER | kommando;

	//Pin PD1 als Ausgang setzen und LED ausschalten.
	DDRD |=  (1<<PD1);
	PORTD |= (1<<PD1);	
	
	//Daten senden
	for(n=0;n<14;n++)
	{
		if(!( daten & (1<<(13-n)) ) )
			PORTD &= ~(1<<PD1);	
		else
			PORTD |= (1<<PD1);	

		Sleep(32);

		if(( daten & (1<<(13-n)) ))
			PORTD &= ~(1<<PD1);	
		else
			PORTD |= (1<<PD1);	
			
		Sleep(32);
				
	}
	
	//LED ausschalten
	PORTD |= (1<<PD1);	

	return;
}