Uso un teclado 4x4 con solo un interruptor de cierre en cada tecla, es decir que no es conmutador.
Tengo problema de rebote de contactos al introducir datos.
La libreria de teclado que uso es la siguiente
|code|
char const KEYS[4][4] = {{"-","0",".","E"},
{"1","2","3","C"},
{"4","5","6","B"},
{"7","8","9","A"}};
// Caracteres ASCII asociados a cada tecla:
#byte kbd_port_b = 6
char kbd_getc()
{
char tecla=0;
int f,c,t,i,j;
port_b_pullups(true);
set_tris_b(0b00001111); // RB7-RB4 salidas, RB3-RB0 entradas
for(f=0x10, i=0; i<4; f<<=1, i++)
{
for(c=0x01, j=0; j<4; c<<=1, j++)
{
kbd_port_b = ~f;
delay_cycles(10);
t = kbd_port_b & 0x0F;
t = ~(t | 0xF0);
if(t == c)
{
delay_ms(100);
tecla=KEYS[j];
while(t==c)
{
restart_wdt();
t = kbd_port_b & 0x0F;
t = ~(t | 0xF0);
}
break;
}
}
if(tecla)
break;
}
port_b_pullups(false);
return tecla;
}
|endcode|
¿Como podria modificarla para evitar el rebote.?
Subi los tiempos que estaban en 20 ms a 100 ms pero sigue igual
Muchas gracias