#include<16f88.H>
#FUSES INTRC_IO,nowdt,PUT,noprotect
#use delay(clock = 8000000)
#use rs232 (baud =9600,XMIT =PIN_b5,RCV =PIN_b2,BITS=8,PARITY =N,FORCE_SW,INVERT)
const char pass[]={'i','c','e','1'}; //constante con la clave
int ban=0;
char PRENDER_LED;
void MENU()
{
puts("\f OPRIMA BARRA PARA REGRESAR A MENU\n\n");
puts("\r OPRIMA 0 ESTADOS\r\n");
puts("oprima 1 PARA ABRIR LA PUERTA\r\n");
puts("oprima 2 PARA CERRAR LA PUERTA\r\n");
puts("oprima 3 PARA ACTIVAR ALARMA\r\n");
puts("oprima 4 LUZ DEL CUARTO\r\n");
}
VOID ALARMA(){
char key; //variable para pulsación del teclado
char dato[4]; //variable vector para ir guardando cada uno de las pulsaciones de caracteres
int i=0;
while(true){
output_bit(52,0);
if(input(PIN_B4)==1)
{
PRINTF("\fTeclee el pasword para desactivar la alarma\r\r");
output_bit(53,1);
while(i<=3) //Este ciclo permite ingresar
{ //cuatro digitos
key=getc();
if(key!=0){
dato[i]=key;
i++;
delay_ms(100);
}}
i=0;
if((dato[0]==pass[0])&&(dato[1]==pass[1])&&(dato[2]==pass[2])&&(dato[3]==pass[3]&&input(PIN_b4)==0))
{
output_bit(52,0);output_bit(53,0);
printf("\f CORRECTO BIENVENIDO A CASA");
break;
}
else
{
printf("\f Incorrecto int");
delay_ms(1000);
}
}
}
}
VOID main ()
{
output_bit(48,0);
output_bit(42,0);
output_bit(43,0);
printf(" PULSE BARRA\r");
printf("\f ENTRADA1 : %u\r\n",INPUT(PIN_A0));
printf(" ENTRADA2 : %u",INPUT(PIN_A1));
OUTPUT_BIT(41,0);
IF(INPUT(PIN_A0)==1){OUTPUT_BIT(41,1);
while(INPUT(PIN_A0)==1){}
ban=1;}
if(ban==1){OUTPUT_BIT(41,0);
BAN=0;}
FOR (;;){
PRENDER_LED=getch();
SWITCH (PRENDER_LED){
CASE ' ': MENU();
BREAK;
CASE '0': output_toggle(PIN_A4);
BREAK;
CASE '1': output_toggle(PIN_A2),output_bit(54,1);
BREAK;
CASE '2': output_toggle(PIN_A3),output_bit(55,1);
BREAK;
CASE '3': ALARMA();
break;
}}}