

#include <16f877a.h> //microcontrolador a usar #fuses hs,nowdt //configura el pic #use delay(clock=16Mhz) //tiempo de frecuencia #use standard_io(a) #define use_portD_lcd TRUE //definimos lcd #define use_portB_kbd TRUE //definimos teclado matricial #include//incluir libreria de lcd #include //incluir libreria del teclado matricial #include // #rom 0x2100={'7','5','3','0'} //posicion 0,1y2 de la eeprom con los datos void main() { //funcion principal4 char k; //variable tipo caracter int i; //variable tipo entero char data[4],clave[4]; //matrices para guardar clave y datos lcd_init(); //inicializar el lcd kbd_getc(); //inicializar el teclado port_B_pullups(TRUE); //habilita y desabilita las resistencias internas while (TRUE)//bucle repetitivo { i=0;//posicion de la matriz printf(lcd_putc,"\fBIENVENIDO A ..\nCASA");//para primer dato delay_ms(1000); printf(lcd_putc,"\fINGRESE:\nCLAVE"); while(i<=3){ //para cuadro datos k=kbd_getc(); //lee el teclado if(k!=0)//si se a pulsado alguna tecla { data[i]=k; //se guarda en la posicion corespondienta i++;//incremento en 1 printf(lcd_putc,"\fPULSAR CLAVE%u\n",i+1);// }} for(i=0;i<=3;i++)//pasa datos de eeprom a la matriz clave { clave[i]=read_eeprom(i);//lee la memoria eeprom hacia la variable clave } if ((data[0]==clave[0])&&(data[1]==clave[1])&&(data[3]==clave[3])) { printf(lcd_putc,"\fPUERTA\nABIERTA"); //compara los datos y la clave output_high(PIN_A0); //si es igual da pulso al rele delay_ms(1000); output_low(PIN_A0); //si es igual da pulso al rele delay_ms(1000);//salida en baja } else printf(lcd_putc,"\fPUERTA\nSERRADA"); //clave erronea delay_ms(1000); //tiempo }}