برنامه خواندن کدهای RC5:
typedef union
{
uint16_t raw;
struct
{
unsigned cmd : 6; // LSB
unsigned addr : 5;
unsigned toggle : 1;
unsigned start : 2;
unsigned : 2; // MSB
};
} rc5data;
static volatile int flag = 0;
static volatile rc5data data;
void init_int0()
{
// Interrupt on INT0 pin going low
MCUCR = (1 << ISC01);
//EICRA = (1<<ISC01); //mcu = at90can128
// Turn on INT0!
GICR = (1 << INT0);
//EIMSK |= (1 << INT0); //MCU = at90can128
}
SIGNAL (INT0_vect)
{
int pos = 0;
if (!flag)
{
data.raw = 0;
// triggers on falling edge of start bit 1.
_delay_us(200);
while (pos < 14)
{
data.raw = (data.raw << 1) | ((~PIND & 0x04) >> 2);
_delay_us(1800);
pos++;
}
flag = 1;
}
}
int main (void)
{
while(1)
{
if(flag)
{
// your program
flag = 0;
}
}
return 0;
}
- ۹۳/۱۰/۱۲