//#define __AVR_ATmega328P__
#include <avr/io.h> //paramanejasr los puertos
#include <avr/interrupt.h> //para la interrupcionn
int main(void)
{
//Configura como entradas a PD2 y PD3
DDRD=DDRD&0b11111011; //conf. PD2 como entrada (INT0)
DDRD=DDRD&0b11110111; //conf. PD3 como entrada (INT1)
//Habilita las resistencia de Pull-up de PD2 y PD3
PORTD=PORTD|0b00000100; // para PD2
PORTD=PORTD|0b00001000; // para PD3
//Configura PB5 como salida
DDRB=DDRB|0b00100000;
DDRB=DDRB|0b00000001;
//INT0 para ser disparado por nivel bajo
EICRA=EICRA&0b11111111;
//INT1 para ser disparado por nivel bajo
EICRA=EICRA&0b11111111;
//Habilitando INT1 e INT0
EIMSK=EIMSK|0b00000011;
//Habilitando las interrupciones globales
SREG=SREG|0b10000000;
PORTB=PORTB&(~0x20);
PORTB=PORTB|(0x01);
while(1)
{
PORTB=PORTB|(0x01);
_delay_ms(1000);
PORTB=PORTB&(~0x01);
_delay_ms(1000);
}
}//fin main
//SUB RUTINA
//el llmado lo hace el estado de los botones
ISR(INT0_vect){
//Activar Led PB5
PORTB=PORTB|0x20; //activar el led en el puerto b5
}
ISR(INT1_vect){
//Activar Led PB5
PORTB=PORTB&(~0x20); //va a apagar el led
}