Hola Amigos
Al final ayer noche consegui lo que perseguia,
que me detectara las teclas que le pulsaba,
si AngelGris, asi fue mas o menos como
como llegue a la sintesis del problema,
tuve que modificar un poco el codigo, al final el codigo quedo asi:
int8 escanea_tecla(void){
int8 f,c,datos;
signed int8 dato=-1;
//int8 fila=0b11111110; //Primera fila (P0=1) //pines arriba
//invierto orden de columnas y rotacion parapines abajo
int8 fila=0b11110111; //Primera fila (P3)
f=0;
for (f=0; f<4; f++) //Recorre las 4 filas (lineas)
{
PCF8574_Escribe(fila);
delay_ms(20); //Para que le de tiempo a escribir
dato=PCF8574_Lee();
c=0;
if (!bit_test(dato,4)) c=4; //Col 1 dato 4
else if (!bit_test(dato,5)) c=3; //Col 2 dato 5
else if (!bit_test(dato,6)) c=2; //Col 3 dato 6
else if (!bit_test(dato,7)) c=1; //Col 4 dato7
if(c!=0) break; //Si c es distinto de 0 sale del for
//rotate_left(&fila, 1); //Siguientes filas, va desplazando el 0 hacia la izquierda
rotate_right(&fila, 1); //Siguientes filas, va desplazando el 0 hacia la derecha
}
datos=dato;
if(c)
dato=(f*4)+c;
else
dato=-1; //Ninguna tecla pulsada
PCF8574_Escribe(0b11110000); //Vuelve a poner como salida (0) las Lineas
//y como entrada (1) las Columnas
lcd_gotoxy(3,1);
printf(lcd_putc,"dato:%2x f:%2d, c:%2d",datos,f,c);
return dato;
}
Lo más seguro que en un futuro próximo ingenie algo
para que sea el software el que detecte el hardware de la conexion del teclado matricial
al puerto del expasor y se auto reconfigure sin tener que cambiar el hardware.
No seria dificil a primera vista,
preguntar donde se encuentra 4 tecla y dependiendo de la posición
sería un tipo de teclado u otro.
Bueno esto para otro hilo.
----------------------------------------------------------------------------------------------------------
:: Reconocimiento del hardware de un teclado y Reconfiguración automatica del mismo. ::
----------------------------------------------------------------------------------------------------------
*** " Quisiera mostrar agradecimientos, a los compañeros del foro,
que me brindaron su tiempo y su atención asi como
ejemplos de codigo, para todos aquellos,
mis más cordiales agredeciemientos. "
Un saludo