O keypad existente no kit AXM-232 é um padrão telefônico com 3 colunas e 4 linhas. Com essa configuração ele utiliza 7 pinos para interface com o controlador, um para cada linha e coluna.
A EVB9S12NE64 possui um conector para keypad de 8 pinos, suportando dispositivos com 16 teclas ( 4 linhas e 4 colunas). Os pinos 1 a 4 desse conector estão ligados aos pinos 0 a 3 da porta H da MCU, e os pinos 5 a 8 do conector aos pinos 0 a 3 da porta J.
O funcionamento do keypad ocorre da seguinte forma, os quatro primeiros pinos são de saída e servem para alimentar as linhas da matriz que serão escaneadas, logo se quiser escanear todas as linha deve-se ativar os 4 pinos. Os pinos 5 a 8 são de entrada, e servem para ver qual coluna de uma linha está ativa, indicando a tecla que está pressionada. O nosso algoritmo funciona dessa forma. Primeiro ativamos todas as linhas para ver se alguma possui um botão apertado. Se lermos um valor diferente de zero em um dos pinos de entrada então passamos a buscar em qual linha ele está localizado, ativando uma de cada vez, até que seja lido um valor diferente de zero em um dos pinos. Para falsos contatos nas teclas um mecanismo simples de debounce foi utilizado, é verificado oito vezes se a mesma tecla está pressionada antes de passar para o próximo estágio, display e ativação do áudio.
Pedro Ribeiro 2009-07-08