#include <16f628A.h>
#fuses HS,NOWDT,NOPROTECT,PUT
#use delay (clock=20000000)
#use rs232(baud=2400, xmit=PIN_B2, rcv=PIN_B1)
#define P_Salida PIN_B5 //Led Verde
int ent[3]; //Bufer de llegada
int Salida=0; //Variables para temporizar
#int_RDA //Rutina para el servicio de Interrupción
void RDA(){
if(kbhit()){
if(ent[2]=='A' && ent[1]=='A' && ent[0]=='A'){ // MAMA
Salida=10; // Inicio de contadores
OUTPUT_BIT(P_Salida,1);
ent[2]=0; // Nos aseguramos de que no lo vuelva a interpretar
}
ent[0]=ent[1];
ent[1]=ent[2];
}
}
void main(){
OUTPUT_BIT(P_Salida,1);
delay_ms(1000);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
OUTPUT_BIT(P_Salida,0);
while(1){ //Bucle principal control de las salidas
delay_ms(1000);
if( Salida>0 )
Salida--;
else OUTPUT_BIT(P_Salida,0); // Cerramos la puerta hace mas de 10 segundos que no recive
}
}