• Miércoles 8 de Mayo de 2024, 17:40

Autor Tema:  Teclado Matricial 4x4  (Leído 6958 veces)

farmada

  • Miembro activo
  • **
  • Mensajes: 62
    • Ver Perfil
Teclado Matricial 4x4
« en: Lunes 19 de Septiembre de 2005, 19:02 »
0
Gente:

     Alguno de ustedes tendria un ejemplo de lectura de teclado matricial ?. Estoy desde hace rato tratando y no doy pie con bola. Si alguien me puede dar una mano se los agradezco.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Teclado Matricial 4x4
« Respuesta #1 en: Martes 20 de Septiembre de 2005, 14:32 »
0
Hola farmada, talves esto te sea de ayuda :)
Código: Text
  1.  
  2. /*-------------------------------------------*\
  3. | KBD2.C |
  4. | Autor: Pedro Mª Jiménez |
  5. | (c) Microsystems Engineering (Bilbao) |
  6. \*-------------------------------------------*/
  7.  
  8. // Funciones para la gestión del teclado de la Trainer PLUS.
  9.  
  10. // char kbd_getc() Devuelve el código ASCII de la tecla pulsada.
  11. // Si no se pulsó ninguna, devuelve 0.
  12.  
  13.  
  14. // Conexiones del teclado.
  15. /*
  16. RB0 RB1 RB2 RB3
  17. ^ ^ ^ ^
  18. | | | |
  19. |---|---|---|---|
  20. RB4 ---> | 1 | 2 | 3 | F |
  21. |---|---|---|---|
  22. RB5 ---> | 4 | 5 | 6 | E |
  23. |---|---|---|---|
  24. RB6 ---> | 7 | 8 | 9 | D |
  25. |---|---|---|---|
  26. RB7 ---> | A | 0 | B | C |
  27. |---|---|---|---|
  28. */
  29.  
  30. // Caracteres ASCII asociados a cada tecla:
  31. char const KEYS[4][4] = {{'1','2','3','F'},
  32. {'4','5','6','E'},
  33. {'7','8','9','D'},
  34. {'A','0','B','C'}};
  35.  
  36. #byte kbd_port_b = 6
  37.  
  38.  
  39. char kbd_getc()
  40. {
  41. char tecla=0;
  42. int f,c,t,i,j;
  43.  
  44. port_b_pullups(true);
  45. set_tris_b(0b00001111); // RB7-RB4 salidas, RB3-RB0 entradas
  46.  
  47. for(f=0x10, i=0; i<4; f<<=1, i++)
  48. {
  49. for(c=0x01, j=0; j<4; c<<=1, j++)
  50. {
  51. kbd_port_b = ~f;
  52. delay_cycles(1);
  53. t = kbd_port_b & 0x0F;
  54. t = ~(t | 0xF0);
  55. if(t == c)
  56. {
  57. delay_ms(20);
  58. tecla=KEYS[j];
  59. while(t==c)
  60. {
  61. restart_wdt();
  62. t = kbd_port_b & 0x0F;
  63. t = ~(t | 0xF0);
  64. }
  65. break;
  66. }
  67. }
  68. if(tecla)
  69. break;
  70. }
  71.  
  72. port_b_pullups(false);
  73. return tecla;
  74. }
  75.  
  76.  

Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

ijfa

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Teclado Matricial 4x4
« Respuesta #2 en: Domingo 18 de Diciembre de 2005, 15:21 »
0
hola jonathan este programa sirve para el pic 16f874???....es ke tengo otro programa pero no me funka......ya no se ke mas hacer. :( .....thx