
Härligt att få titta på. Blir nog att inhandla sådant itll helgen iallfall. Fasen de kliar i fingrarna.
Kod: Markera allt
volatile unsigned char rfdatahigh;
volatile unsigned char rfdatacnt;
volatile unsigned long int rfdata;
ISR(TIM0_COMPA_vect)
{
static unsigned int counter;
if (counter < 65535) counter++;
if (rfdatahigh && counter > 400)
{
rfdata = rfdata << 1;
rfdata += (PINB & _BV(PB2)) ? 1 : 0;
rfdatahigh = 0;
if ((rfdata & 0x00FFFFFF) == 0x00510551)
{
button1_pressed();
counter = 0;
}
else if ((rfdata & 0x00FFFFFF) == 0x00511151)
{
button2_pressed();
counter = 0;
}
else if ((rfdata & 0x00FFFFFF) == 0x00510554)
{
button3_pressed();
counter = 0;
}
else if ((rfdata & 0x00FFFFFF) == 0x00511154)
{
button4_pressed();
counter = 0;
}
}
}
ISR(PCINT1_vect)
{
rfdatahigh = 1;
TCNT0 = 0;
}
int main(void)
{
DDRB = 0x00;
PORTB = 0x03;
DDRA = 0x0F;
//Setup Timer 0
TCCR0A = 0x02;
TCCR0B = 0x02;
OCR0A = 0x4A;
TCNT0 = 0;
TIMSK0 = _BV(OCIE0A);
//Setup interrupt on pin change
GIMSK |= _BV(PCIE1);
PCMSK1 = 0x04;
sei(); //Enable interrupts
while(1) {
//Gör nåt kul
}
}