hola Amigos
sigo con el teclado y el expansor, lo probe fisicamente y decta las teclas pulsada,
pero hay otro problema.
Mi teclado es este:
1 2 3 F
4 5 6 E
7 8 9 D
A 0 B C
aqui debajo los pines de conesiones
1234 5678
1-4 columnas
5-8 Filas
Pues bien el problema es
que si pulso 1 coincide dice en el lcd:
Codigo tecla: 1
Tecla:1
lo mismo para: 5, 9 y C
creo que es porque coinciden, el valor de la fila y el de la columna.
-------------
ahora vienen los problemas:
si pulso 2 me dice que es 4
si pulso 3 me dice que es 7
si pulso F me dice que es A
Es como si estubieran cambiadas las filas y las columnas.
------------------------------
Haciendo más pruebas:
añado una linea al programa
printf(lcd_putc,"dato:%2x f: %2d, c: %2d",datos,f,c);
con ella se que dato hay la fila y la columna de la tecla.
mientras este pulsada, si la suelto se pone la ultima.
pues bien.
Las conexiones fisicas del expansor las tengo de tal forma:
patita 12 11 10 9 4 3 2 1 expansor
bit 7 6 5 4 3 2 1 0 expansor
invertido 8 7 6 5 4 3 2 1 teclado
nada sigue dando problemas
tambien anote el dato que me sacaba en pantalla
ordenado por filas: ===================
tecla - dato su binario
1 - ee 1110 1110 2 - ed 1110 1101 3 - eb 1110 1011 F - e7 1110 0111
4 - de 1101 1110 5 - dd 1101 1101 6 - db 1101 1011 E - d7 1101 0111
7 - be 1011 1110 8 - bd 1011 1101 9 - bb 1011 1011 D - b7 1011 0111
A - 7e 0111 1110 0 - 7d 0111 1101 B - 7b 0111 1011 C - 77 0111 0111
| ordenado por Columnas: ===================
tecla - dato su binario
1 - ee 1110 1110 4 - de 1101 1110 7 - be 1011 1110 A - 7e 0111 1110
2 - ed 1110 1101 5 - dd 1101 1101 8 - bd 1011 1101 0 - 7d 0111 1101
3 - eb 1110 1011 6 - db 1101 1011 9 - bb 1011 1011 B - 7b 0111 1011
F - e7 1110 0111 E - d7 1101 0111 D - b7 1011 0111 C - 77 0111 0111
|
analizando el codigo leo:
if (!bit_test(dato,4)) c=1;
esta funcion que hace, realmente ?
bit_test(variable,bit);
testea el bit de la variable..
si el bit 4 de la variable dato es distinto es la columna 1.
¿Es correcta esta interpretación?
Un saludo