#include "avr.h" class LedTI4s { public: /* Referência ao registrador */ AT90S* AT90S8515; /* Contador para o tempo */ unsigned char contador; /* Handler da interrupção 0 (Botão)*/ void IRQ0 (void) { if(AT90S8515->mcucr == 0x0A) { AT90S8515->timsk = 0x02; AT90S8515->mcucr = 0x0F; } else { contador = 61; AT90S8515->timsk = 0x00; AT90S8515->mcucr = 0x0A; AT90S8515->portb = 0xFF; } } /* Handler da interrupção 1 (Botão)*/ void IRQ1 (void) { IRQ0(); } /* Handler da interrupção 7 (Timer)*/ void IRQ7 (void) { contador--; if(contador == 0) AT90S8515->portb = 0x00;//acende os leds } /* Inicailiza os registradores e o objeto para o registrador. */ void inicializa(void) { AT90S8515 = reinterpret_cast<AT90S *>(0); AT90S8515->ddrb = 0xFF;//configura porta B como saída AT90S8515->ddrd = 0x00;//configura porta D como entrada AT90S8515->tccr0 = 0x05;//prescaler 1024 AT90S8515->portb = 0xFF;//apaga os leds AT90S8515->sreg = 0x80;//habilita as interrupções AT90S8515->gimsk = 0xC0;//habilita as interrupções AT90S8515->timsk = 0x00;//desabilita timer 0 AT90S8515->mcucr = 0x0A; contador = 61; } }; LedTI4s led; void __vector_1 (void) { led.IRQ0(); } void __vector_2 (void) { led.IRQ1(); } void __vector_7 (void) { led.IRQ7(); } int main(void) { led.inicializa(); while(1); return 0; }