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.