Sie sind auf Seite 1von 4

#include <18f4550.

h>
#use delay(clock=48000000)
#include <kbd_lib1.c>
#include <LCD.C>
#fuses XTPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG
//#use fixed_io(a_outputs=PIN_A3,PIN_A4) // define puerto y pines
#byte porta=0x00
//define puerto
void inicio();
void menu_inicial();
void admin();
void menu_admin();
void usuario();
void cambio_admin();
void cambio_usuario();
char a;
char clavea[4]={'1','2','3','4'};
char limita=4;
int contc=1;
signed char e;
boolean var=0;
// variable donde se almacena la tecla precionad
a
void main()
{
inicio:
lcd_init();
kbd_init();
set_tris_a(0X0f);
port_b_pullups(TRUE);
for(;;)
{
// do{a=kbd_getc();
// }while(a==0);
//bit_set(porta,1);
delay_ms(50);
// bit_clear(porta,1);
// bit_set(porta,2);
menu_inicial();
goto inicio;
}

//define los pines de entrada y salida

// hasta precionar una tecla.


// Accionar un pitido
// Prende el LCD.
// Salto a men principal.

}
//==============================================================================
//
SALUDO INICIAL
//==============================================================================
void menu_inicial()
{
lcd_putc(" \f BIENVENIDO\n
WELCOME"); // Escribe en el lcd
delay_ms(100);
//Espero dos segundos
uno:
//Etiqueta UNO.
lcd_putc("\f->A Ingrese clave \n->B Cambiar clave"); //solicitud de clave.
for(;;)
{
do{a=kbd_getc();
}while(a==0);
//Hasta pulsar una tecla.

delay_ms(50);
if(a=='A')
{
admin();
delay_ms(100);
break;
}
if(a=='B')
{
cambio_admin();
delay_ms(100);
break;
}
if(a!= 'A' && 'B')
{
lcd_putc("\fTecla incorrecta\ncorrija x favor.");
delay_ms(200);
goto uno;
}
}
}
//==============================================================================
// PEDIR LA CLAVE DE INGRESO
//==============================================================================
void admin()
{
inicio:
lcd_putc("\fINGRESE SU CLAVE\n");
for(e=0; ;e++)
{
//bucle no sale...
do{a=kbd_getc();
}while(a==0);

//...pulsar una tecla

delay_ms(100);
lcd_putc("*");
if(a=='C' || a=='D')
//si se pulsa C o D te pide presionar una
tcl correcta
{
if(e==0)
//no se sale...
{
lcd_putc("\nPresiona una tcl!");
delay_ms(100);
lcd_putc(" \n
");
delay_ms(50);
continue;
}
if(e!=limita)
correcta
var=1;
break;
}
if(a!=clavea[e])

//...poner una clave valida


//para ser correcto debe tener tb longitud
//salimos si se pulsa tecla * o #
//comprobacion de caracteres correctos

var=1;

//No es correcto->clave incorrecta

}
//...hasta pulsar * o #
if(var>0){
//Clave incorrecta
lcd_putc("\fClave\nIncorrecta!");
delay_ms(50);
output_high(PIN_A3);
delay_ms(100);
output_low(PIN_A3);
lcd_putc("\f");
printf(lcd_putc,"INTENTOS=%U",contc);
contc++;
delay_ms(50);
if(contc==4){
contc=1;
for(;;){
lcd_putc("\fTeclado\nBloqueado!");
//delay_ms(18000);
break;
}
do{
//espera hasta...
a=kbd_getc();
}while(a==0);
if(a=='1'||a=='2')
{
lcd_putc("\fTeclado\nHabilitado!");
delay_ms(50);
}//break;
}//break;

//break;

else{
lcd_putc("\f Acceso permitido\n
delay_ms(50);
lcd_putc("\f No olvide cerrar\n
output_high(PIN_A2);
delay_ms(100);
output_low(PIN_A2);
}
var=0;
}

//Clave correcta
Adelante!");
La puerta!");

//reset var

//==============================================================================
//
CAMBIO DE CLAVE
//==============================================================================
void cambio_admin()
{
lcd_putc("\fNueva clave:\n");
for(e=0;e<5;e++)
{
do{a=kbd_getc();
}while(a==0);

//presentacion
//espera hasta...
//...pulsar una tecla

delay_ms(100);
if(a=='C' || a=='D')

//si se pulsa * o # se sale de la func

ion
{
if(e==0)
//no se sale...
{
lcd_putc("\nEscribe una!" );
delay_ms(100);
lcd_putc("\n " );
lcd_gotoxy(1,2);
e=-1;
continue;
//...hasta poner una clave valida
}
lcd_putc("\fGuardando clave\n nueva ...");
delay_ms(200);
lcd_putc("\f Nueva clave\n guardada ...");
break;
//salir de funcion nueva_clave
}
lcd_putc(a);
limita=e+1;
clavea[e]=a;
)
}
}

//longitud de la clave
//almacena clave(maximo 16 caracteres

Das könnte Ihnen auch gefallen