Un teclado matricial es un dispositivo para el ingreso de datos. Como su nombre lo dice este dispositivo es básicamente una matriz, la cual consta de filas y columnas. Cada unión entre las filas y las columnas dan origen a un pulsador o tecla.
Las mismas serán nuestro método de ingreso de información a nuestro microcontrolador.
Nosotros hablaremos de un teclado matricial de 4 X 4, es decir cuatro filas y cuatro columnas, el cual posee 16 teclas.
El teclado consta de una línea de 8 pines, los cuales 4 serán tomados de entrada y los otro cuatro de salida. Más adelante se explicara el porque de esto.
La siguiente imagen muestra la configuración antes mencionada.

Imagen 1.
El porque de esto es muy simple. El microcontrolador deberá enviar por medio de la salida un valor lógico, el cual será recibido por alguna de las entradas. Dándole de esta manera un valor asignado dentro de nuestro programa.
La programación que se detalla a continuación se ira explicando a medida avanzan las filas de la misma:
clr P0.4 ; Se coloca un 0 en la primera salida.
setb P0.5 ; Los siguientes puertos de salida se
setb P0.6 ; colocan en 1.
setb P0.7
jnb P0.0, OPC1 ; Se pregunta que entrada se
jnb P0.1, OPC2 ; encuentra en 0, para saltar a la
jnb P0.2, OPC3 ; etiqueta que posee nuestra instrucción.
jnb P0.3, OPC4
Como se observa la programación no tiene nada de complicado, es solo ir preguntando que pulsador se encuentra recibiendo la información.
Luego se repetirá la misma estructura que la anterior mencionada, pero se ira desplazando el "clr" y se ira generando nuevas etiquetas, las cuales representarán otras teclas.
Mi propia recomendación, la cual me ha funcionado en mis proyectos en los cuales he utilizado un teclado matricial, es ir desplazando un "0" y a su vez armar subrutinas para las funciones de las teclas. Esto último es debido a que los saltos de las funciones "JNB" no son muy largos y producirán errores en nuestro programa.