Está en la página 1de 1

#include <xc.

h>

#define PRENSA PORTAbits.RA0


#define RES PORTAbits.RA1
#define SIRENE PORTAbits.RA2
#define S1 PORTBbits.RB0
#define S2 PORTBbits.RB1
#define BT PORTBbits.RB2
#define REARME PORTBbits.RB3
#define _XTAL_FREQ 4000000

void atraso (int w){


for(int i = 1; i<=6*w; i++) __delay_ms(166.67);
return;
}

void interrupt ISR (){


int PORTA_TEMP = PORTA;
if(INTCONbits.INT0IF || INTCON3bits.INT1IF){
INTCONbits.INT0IF = 0;
INTCON3bits.INT1IF = 0;
PORTA = 0;
SIRENE = 1;
while (REARME ==0 || S1 ==0 || S2 ==0);
PORTA = PORTA_TEMP;
return;
}
else return;
}

void main (){


ADCON1 = 0X0F;
TRISA = 0;
TRISB =255;

INTCONbits.GIE =1; // ativa o controle global de interrup��es


INTCONbits.INT0IE = 1; // ATIVA a INT0
INTCON3bits.INT1IE = 1; // ATIVA a INT1
INTCON2bits.INTEDG0 = 0; // conf. INT0 na borda de descida
INTCON2bits.INTEDG1 = 0; // conf. INT1 na borda de descida

while(1){
if(BT){
PRENSA =1;
atraso(2);
RES =1;
atraso(2);
RES=0;
PRENSA = 0;
}
}
}

También podría gustarte