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;
}
Lesezeichen