Sei sulla pagina 1di 2

char tecla = 0; //Almacena el valor de la tecla que se presiono el en

teclado.
char inclave[4] = {0}; //Guarda los 4 datos de la clave en un arreglo.
int countinclave = 0; //Contador para los la posicion de los datos en el arreglo.
int clave1check = 0; //Verificacion de la clave, primer digito.
int clave2check = 0; //Verificacion de la clave, segundo digito.
int clave3check = 0; //Verificacion de la clave, tercer digito.
int clave4check = 0; //Verificacion de la clave, cuarto digito.
int clavechecktotal = 0; //Verificacion de toda la clave.
char clave1 = '1'; //Clave por defecto el primer digito es 1.
char clave2 = '2'; //Clave por defecto el segundo digito es 2.
char clave3 = '3'; //Clave por defecto el tercer digito es 3.
char clave4 = '4'; //Clave por defecto el cuarto digito es 4.
char direccion1 = 0x01; //Direcion de la memoria eeprom.
char direccion2 = 0x02; //Direcion de la memoria eeprom.
char direccion3 = 0x03; //Direcion de la memoria eeprom.
char direccion4 = 0x04; //Direcion de la memoria eeprom.

//Por defecto los datos que estaran en la memoria esta como vacio osea 0xFF en cada
direccion
if(eeprom_readx(direccion1) == 255)
{
eeprom_writex(direccion1, clave1);
}
if(eeprom_readx(direccion2) == 255)
{
eeprom_writex(direccion2, clave2);
}
if(eeprom_readx(direccion3) == 255)
{
eeprom_writex(direccion3, clave3);
}
if(eeprom_readx(direccion4) == 255)
{
eeprom_writex(direccion4, clave4);
}

if(tecla != 0)
{
//La contrase�a solo acepta numeros.
if(tecla != 'A' && tecla != 'B' && tecla != 'C' && tecla != 'D' && tecla !=
'*' && tecla != '#')
{
LCD_gotoxy(1,1);
LCD_puts("Ingrese la clave",16);
inclave[countintclave] = tecla; //La tecla presionada se
almacena en el arreglo.
countintclave++; //Incrementa la posicion de gurdado en el
arreglo.
LCD_gotoxy(countintclave + 1, 2); //Imprime la tecla oprimida
LCD_putc(tecla);
}

//comando para seleccionar enter


if(tecla == 'D')
{
//Proceso de comparacion de la contrase�a ingresada con la almacenada
en la memoria eeprom.
if(eeprom_readx(direccion1) == inclave[0]) clave1check = 1;//si el
valor es igual genera un 1.
else clave1check = 0;
if(eeprom_readx(direccion2) == inclave[1]) clave2check = 1;//si el
valor es igual genera un 1.
else clave2check = 0;
if(eeprom_readx(direccion3) == inclave[2]) clave3check = 1;//si el
valor es igual genera un 1.
else clave3check = 0;
if(eeprom_readx(direccion4) == inclave[3]) clave4check = 1;//si el
valor es igual genera un 1.
else clave4check = 0;

clavechecktotal = clave1check + clave2check + clave3check +


clave4check;//suma el valor de las claves.

if(clavechecktotal == 4)
{
LCD_gotoxy(1,1);
LCD_puts("Clave correcta",14);
LATAbits.LA0 = 1; //Enciende el LED de abierto.
LATAbits.LA1 = 0; //Apaga el LED de cerrado.
__delay_ms(5000);
}
else
{
LCD_gotoxy(1,1);
LCD_puts("Clave Incorrecta", 16);
LATAbits.LA2 = 1; //Enciende el de error.
__delay_ms(500);
LATAbits.LA2 = 0; //Enciende el de error.
__delay_ms(500);
LATAbits.LA2 = 1; //Enciende el de error.
__delay_ms(500);
LATAbits.LA2 = 0; //Enciende el de error.
__delay_ms(500);
LATAbits.LA2 = 1; //Enciende el de error.
__delay_ms(500);
LATAbits.LA2 = 0; //Enciende el de error.

__delay_ms(5000);
LCD_clear();
LCD_gotoxy(1,1);
LCD_puts("Ingrese la clave",16);

//Reinicio los valores de las variables


clave1check = 0;
clave2check = 0;
clave3check = 0;
clave4check = 0;
clavechecktotal = 0;
countintclave = 0;
}
}
}

Potrebbero piacerti anche