Autor Tema: Sistema de seguridad en xc8  (Leído 2762 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Sormar1

  • PIC10
  • *
  • Mensajes: 1
Sistema de seguridad en xc8
« en: 25 de Mayo de 2018, 13:50:00 »
Hola a todos.
Tengo que hacer un sistema de seguridad en XC8 con el pic18f4550. Las contraseña la debo de aplicar con un keypad de 4x4 y visualisar la información en un LCD para esto usaré la libreria xlcd.h
Las características son las siguientes:
1.- Solicitar contraseña de 4 dígitos y guardar.
2.- Imprimir * por cada digito.
3.- Ingresar contraseña y compararla con la contraseña guardada.
4.- Si la contraseña es correcta mostrar "bienvenido" de los contrario pedir contraseña nuevamente.
 Si me pueden ayudar a realizar el codigo porque no mas a mi no mes sale. Utilize interrupción por timer0 pero no funciona.

Muchas gracias!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Sistema de seguridad en xc8
« Respuesta #1 en: 25 de Mayo de 2018, 14:52:20 »
Hacerte el codigo no tendria gracia... Pero si se te puede ayudar con una especie de pseudo-codigo, el cual podes seguir.. No necesitas ningun Timer para lo que pedis realmente.


Código: C
  1. void main(void)
  2. {
  3.  
  4.       // Aca configuracion de los modulos
  5.       //Lees la EEPROM donde guardaste tu contraseña y guardas los datos en un Array, te quedaria por ejemplo: passwordEE[4] = {1,2,3,4}
  6.  
  7.       Repetir para los 4 valores:
  8.           Lectura EEPROM;
  9.          Guardado en array
  10.  
  11.        // Escribo en el LCD lo que deba escribir, y posiciono el LCD en donde deben aparecer los *
  12.        Escribir LCD "Ingrese contraseña"
  13.        LCD GOTO XY  posicion donde pondria los primeros *
  14.  
  15.       while(1)
  16.           //Aca haces la multiplexacion del teclado, si la tecla presionada es la misma que la anterior entonces no la tenes en cuenta y devolves un valor ilogico por ejemplo 0xFF
  17.           // Tambien si no hay nada presionado devolves un 0xFF, sino devolves el valor de la tecla
  18.           tecla = LeerTeclado()
  19.           if( tecla != 0xFF)
  20.           {
  21.                   //Entra si es una tecla valida
  22.                    // Para guardar en ese array voy a usar un indice, le vamos a poner nombre "ind", entonces cuando guardas haces passwordTeclado[ind]
  23.                   Guardo en otro array
  24.                   // Aumentamos el indice, para que se vaya guardando en 0, luego en 1, luego en 2 y asi contianumente
  25.                   ind++
  26.                   // 2 opciones, la primera es si ya ingresamos 4 teclas. la segunda cuando todavia no lo hicimos (va por la 1era,2da o 3era)
  27.                   if(ind>3)
  28.                  {
  29.                        //Se ingresaron las 4 teclas, debo comparar
  30.                        Comparo los array passwordEE y passwordTecla (cada elemento de adentro)
  31.                        if( soniguales )
  32.                        {
  33.                                //Son iguales
  34.                                Escribo en el LCD "Bienvenido"
  35.                                Espero 1 segundo para que se pueda ver el mensaje
  36.                        }
  37.                        else
  38.                        {
  39.                                 // Son distintos
  40.                                Escribo en el LCD "Contraseña Incorrecta"
  41.                                Espero 1 segundo para que se pueda ver el mensaje
  42.                        }
  43.                       // Reseteo el indice asi cargo otra contraseña
  44.                        ind = 0;
  45.                       // Escribo en el LCD que vuelva a pedir el pass
  46.                       Escribir LCD "Ingrese contraseña"
  47.                       LCD GOTO XY  posicion donde pondria los primeros *
  48.                  }
  49.                  else
  50.                  {
  51.                      //Este caso es para el 1ro,2do o 3er entrada de teclado y debo escribir *
  52.                      // Gracias a nuestros LCD_GOTO_XY de antes, ya esta posicionado correctamente,  entonces solo debo escribir el *
  53.                      Escribir en el LCD "*"
  54.                  }
  55.            }
  56.  
  57. }

Eso es todo, ya con esto es casi una traduccion de lo que tenes que hacer. Cualquier duda podes preguntar