/*
 * interrupt_01.cpp
 *
 * Created: 2014.03.19. 18:23:12
 *  Author: Yohnsee
 */ 


#include <avr/io.h>
#include <avr/interrupt.h>

#define F_CPU 4000000UL
#include <util/delay.h>
 

ISR(INT0_vect){
	
	unsigned char tempport;
	uint8_t i;
	
	_delay_ms(500);
	
	tempport=PORTB;	
	
	for (i=0; i<8; i++)
	{
		PORTB=0b00000000;
		_delay_ms(500);
		PORTB=0b11111111;
		_delay_ms(500);
	}
	
	PORTB=tempport;

}

int main(void)
{
	
	DDRD=0b00000100;
	PORTD=0b00000100;
	DDRB=0b11111111;
	PORTB=0b00000000;
	
	SREG=0b10000000;		//megszakítások engedélyezése globálisan
	GIMSK=0b01000000;		//itt engedélyezem az INT0 megszakítást
	MCUCR=0b00000011;		//mi aktiválja a megszakításvektorba való belépést (most az emelkedő él)
	
	
	_delay_ms(500);
	
	PORTB=0b00000001;
	
	_delay_ms(500);
	
    while(1)
    {
        if (PORTB==0b10000000)
        {
			PORTB=0b00000001;
        } 
        else
        {
			PORTB=PORTB<<1;
        }
		_delay_ms(500);
		
    }
}