Hola a todos !!!
Les cuento que en estos días he probado por primera vez y con exito en el manejo de un teclado del tipo matriz 4x4. La cuestión es que mi circuito es portatil ( usa pilas) y por esta razón estuve me vi en la obligación de minimizar en todo lo posible el consumo del mismo, por esto implemente el uso del comando "sleep".
Los pasos que yo sigo son los siguientes:
- preparo los pines del puerto A 0 - 3 todos en cero para que se
porvoque una interrupsión en el caso que se presione una tecla
( los pines pa-0 a pa-3 son las cuatros columnas, y activo las
resistencias PULL-UP del puerto B)
- Cuando una iterrupsión se proboca salta a la rutina interrupsion
y desactivo interrupsion RBIE y RBIF.
- Luego chequeo que tecla fue presionada y ejecuto rutinas de
programa, cuando este termina doy de alta la interrupsion RBIE
y ejecuto el comando SLEEP. Y todo vuelve a repetirse....
Bueno, resulta que cuando presiono una tecla se ejecuta mi rutina, pero cuando vuelvo a presionar otra tecla detecto que el pin del puerto A que es el que envia un barrido de ceros ( columnas ) se encuentran en "1" lógico por lo que nunca provocaría una nueva interrupsión ya que el puerto B no se detectan cambios RB4-RB5-RB6-RB7.
Alguien se le ocurre porqué se "enloquese" los pines del puerto A sabiendo que antes de ejecutar sleep yo puse todos los pienes del puerto A en cero ?
Espero que se entienda.
Desde ya muchas gracias !!!