#define DDRB (*(volatile unsigned char *)(0x17 + 0x20)) /* Registrador de direção dos dados */
#define PORTB (*(volatile unsigned char *)(0x18 + 0x20))/* Registrador de dados */ 
#define DDRD (*(volatile unsigned char *)(0x11 + 0x20)) /* Registrador de direção dos dados */
#define IRQ0 __vector_1
#define IRQ1 __vector_2
#define IRQ7 __vector_7
#define SIGNAL __attribute__ ((signal))
#define GIMSK (*(volatile unsigned char *)(0x3B + 0x20))
#define SREG (*(volatile unsigned char *) (0x3F + 0x20))
#define TIMSK (*(volatile unsigned char *) (0x39 + 0x20))
#define TCCRO (*(volatile unsigned char *) (0x33 + 0x20))
#define MCUCR (*(volatile unsigned char *) (0x35 + 0x20))

void IRQ0(void) SIGNAL;
void IRQ1(void) SIGNAL;
void IRQ7(void) SIGNAL;

unsigned char fim;

void IRQ0 (void)
{
	if(MCUCR == 0x0A)
	{
		TIMSK = 0x02;
		MCUCR = 0x0F;
	}
	else
	{
		fim = 61;
		TIMSK = 0x00;
		MCUCR = 0x0A;
		PORTB = 0xFF;
	}
}

void IRQ1(void)
{
	IRQ0();
}

void IRQ7(void)
{
	fim--;
	if(fim == 0)
		PORTB = 0x00;
}

int main(void)
{
	DDRB = 0xFF;
	DDRD = 0x00;
	TCCRO = 0x05;
	PORTB = 0xFF;
	SREG = 0x80;
	GIMSK = 0xC0;
	TIMSK = 0x00;
	MCUCR = 0x0A;
	
	fim = 61;
	
	while(1);
	return 0;
}