Tenes que dividir el problema...
Uno es tomar el valor del puerto. Lo mas seguro es que estes buscando hacer algun teclado 4x4 o 4x3.
http://www.electronicoscaldas.com/800-thickbox_default/teclado-4x4-matricial-membrana-27899.jpghttps://cdn.shopify.com/s/files/1/0557/2945/products/membrane-keypad-4x4.jpg?v=1410756064Es la forma mas facil, de tener 10 botones al menos para ingresar la contraseña.
Por una parte, vas a tener que hacer un programa que leea eso.. Y que guarde el valor presionado en una variable.
-----
Otras partes pueden ser:
Un loop que pida el numero , guarde el numero en varios registros si usas ASM o ( un array si estas usando C), y al final cuando esten todos los numeros puestos, proceder a comparar con otro array o conjunto de registros.
Como veras no hable nada de leer o grabar la EEPROM, para leerla la podes leer apenas arranca el micro y guardarla en la RAM. Luego si deseas escribirla procedes a escribir en la EEPROM y reemplazar el valor en la RAM.
Como decia si lo tenes en un array, podes enviar uno por uno los valores a la EEPROM, suponete que tu contraseña es de 4 digitos. Por lo tanto tendrias esto:
unsigned char Contrasenia[4],i;
bool Coincide;
// Cargo los datos
for(i=0;i<4;i++)
{
Contrasenia[i] = Leer_teclado();
}
// Compruebo
Coincide = true;
for(i=0;i<4;i++)
{
if(Contrasenia[i] != leer_eeprom(i))
{
Coincide = false;
break;
}
}
// Son iguales?
if(Coincide)
{
//Doy paso
}
else
{
// Paso denegado
}
Para grabar podes hacer lo mismo, suponete que tenemos que grabar lo que esta en Contrasenia..
for(i=0;i<4;i++)
{
grabar_eeprom(i,Contrasenia[i]);
}
Espero haberte dado una idea... Pero si ya hiciste lo del LCD + teclado, haciendo como una cerradura, entonces deberias ser capaz de hacer esto.
Tal ves se te complique un poco en el tema de crear un menu para el LCD o cuando grabarlo.