#include <avr/io.h>
#include <stdio.h>
#include <avr/interrupt.h>
unsigned char count=0;
void init_devices(void)
{
cli();
PORTD |= 0x01; // Switch PullUp
DDRD &= (~0x01); // PORTD PD0 Input Port
PORTL = 0x00; // PORTL (PORTL LED)
DDRL = 0xff; // PORTL Output Port
// External Interrupt 0 ,Falling edge between two samples of INTn
EICRA = (1<< ISC10);
// External Interrupt 0 enable
EIMSK |= (1 << INT0);
sei();
}
int main(void)
{ init_devices();
while(1){
}
}
// External Interrupt
ISR (INT0_vect)
{
EIMSK &= ~(1 << INT0); // External Interrupt 0 Disable
count++; // count
// PORTL = count; // count LED
PORTL = ~PORTL;
EIFR |= (1 << INTF0); // Clear External Interrupt Flag
EIMSK |= (1 << INT0); // External Interrupt 0 enable
}