/* interrupt_02.c ATmega88 @ 1MHz */
#include <avr/io.h>
#include <avr/interrupt.h>	// Einbinden der Headerdatei für Interrupts

uint8_t flag=0;				// Globale Variable flag
uint8_t count=0;			// Globale Variable count

int main(void)
{
	DDRD &= ~(1<<PD2);		// PD2 = Eingang (INT0)
	DDRB |= (1<<PB1);		// PB1 = Ausgang
	PORTB = 0x00;			// PORTB auf low
	
	EICRA |= (1<<ISC01)|(1<<ISC00);		// Int0 wird durch eine steigende Flanke ausgelöst
	EIMSK |= (1<<INT0);					// Ext. Int0 aktivieren
	
	sei();								// Alle Interrupts aktivieren
	
	while(1)
	{
		if(flag == 1)
		{
			count ++;
			PORTB = count;				// PORTB ++
			flag = 0;					// flag löschen
		}
	}
	return 0;
}

ISR (INT0_vect)		// Hier beginnt die ISR für den ext. Int0
{
	flag = 1;		// flag setzen
}