#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;
}