#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
void pcint0_init(void);
volatile unsigned char PinChange = 0;
volatile unsigned char counter = 0;
int main(void)
{
DDRB = 0xFE;
PORTB = 0x01;
DDRA = 0xFF;
pcint0_init();
while(1)
{
if(PinChange)
{
PORTA |= 0x80;
_delay_ms(1000);
PORTA &= ~0x80;
PinChange = 0;
}
}
}
void pcint0_init(void)
{
cli();
PCICR |= (1 << PCIE0);
PCMSK0 |= (1 << PCINT0);
PCIFR |= (1 << PCIF0);
sei(); // SREG = 1
}
ISR(PCINT0_vect)
{
PinChange = 1;
PCIFR = PCIFR | (1 << PCIF0);
}