SCANTECLA
Esta es una subrutina para leer teclados pequeños de matriz 4x4 para microcontroladores PIC.
Para usar pocos pines (I/O) la mayoría de los teclados pequeños de ocho o más interruptores se alambran en un arreglo de matriz.

En lugar de unir cada interruptor
a un pin I/O, se alambran 4 interruptores a la fila común y cada uno de ellos
a la columna,
Para un número dado de interruptores, este método puede ahorrar varios pines
I/O

La desventaja de trabajar con
teclados de matriz radica en una programación adicional.
Esta nota muestra como leer un teclado 4 x 4 usando 8 bits I/O
Cómo funciona.
Configuro al principio del programa
los cuatro bits menos significativos
del puerto RB como salidas (conectado a las columnas )
y los cuatro bits superiores (filas) como entrada.
la subrutina scantecla hace el trabajo real de
lectura el teclado .
envia un "1" por la columna actual
checa si aparece un "1" en la fila actual
Si: termina el subrutina.
No: incrementa interruptor y prueba la próxima fila.
Trata con la próxima columna.
Si el primer interruptor
0 es presionado,
la rutina codifica un 0, en la variable interruptor,
porque acaba antes de incrementar la primera instrucción
Si ningún interruptor se aprieta, la variable interruptor
se incrementa 16 veces.
Por consiguiente, este número sirve como una bandera
para indicar al programa que ningún interruptor se ha apretado.
debouncing
Para solucionar el problema
de debouncing
Después de que un interruptor se aprieta, se debe retardar 20 milisegundos o
más para establecer el nuevo estado.
Eso significa que se puede registrar cuantas veces se ha presionado un interruptor
.
La manera más fácil de derrotar este problema es leer los interruptores, y entonces
esperar un rato antes de leerlos de nuevo.
PRECAUCION
En circunstancias donde el
ruido eléctrico podría ser un problema,
la hoja de los datos de Microchip
indica que podría ser sabio mover las asignaciones de I/O al principio de scantecla.
La razón es la descarga electrostática (ESD)
de las yemas de los dedos del usuario, o probablemente cualquier otro ruido
eléctrico fuerte, podría adulterar un REGISTRO DE CONFIGURACION
I/O ( TRIS ) y podría cambiar un pin de
entrada por salida.