Amigo D@rkbytes. Espero que estés bien. Quiero preguntarte acerca del programa que me enviaste. Disculpa mi ignorancia. Cuando el programa hace el barrido lo inicia con una columna, puesta a cero. Y luego tu pones a cero una fila donde esta la tecla marcada y es la tecla que debe salir. Pero si está a cero es porque no ha sido pulsada, es lo que no entiendo, porque debería enviarse un uno (5 volts) por una columna y luego por la fila donde esta la tecla marcada salir un uno que entra en el puerto correspondiente, es la manera en que veo las cosas. Tu me dirás si estoy errado y si no es mucha molestia y me puedes dar una breve explicación para así corregir mi programa y mis errores. por lo demás el circuito de mi programador está conectado de manera semejante al del proteus tuyo excepto que yo utilizo la filas para el barrido y tu las columnas. También voy a corregir la frecuencia de operación, porque yo no he definido ninguna en el programa y tu empleas 4 mega hertz. Tampoco se que son las resistencias pullup. Bueno eso es todo. Gracias por tu receptividad. Nuevamente me despido deseandote mucha salud y paz. Pasala bien. Espero tu respuesta.
Saludos asdurafael.
El barrido del teclado es muy sencillo, pero para que lo entiendas,
primero debes saber que es una resistencia pull up y pull down.
Una resistencia pull up es un resistor que mantiene un estado alto.
(Una terminal hacia VDD y la otra hacia el pin de entrada del PIC)
Una resistencia pull down es un resistor que mantiene un estado bajo.
(Una terminal hacia VSS y la otra hacia el pin de entrada del PIC)
No solamente se usan en los PIC, también en los chips CMOS y TTL
Se usan para mantener una referencia de voltaje definida.
Ya que al declarar los pines como entradas, quedan sin referencia de niveles.
El ejemplo del teclado que subí las usa, pero están internamente dentro del PIC.
Al puerto B se le pueden activar resistores de pull up por software,
declarando el Bit 7 del registro OPTION en 0
Es por eso que quizás no lograste entender su funcionamiento.
Sencillamente lo que se hace es así:
Para saber cual tecla se pulso, se hace un barrido.
Se pone un 0 en la primer columna y se leen las filas.
Se hace la comparación de que fila esta en 0 y esa corresponderá con la tecla pulsada.
En este caso lo que se espera cuando una tecla esta pulsada es un 0
Leídas las 4 filas, se pone en 1 la primer columna.
Se pone en 0 la siguiente columna y se vuelven a leer las filas, y así repetidamente.
Bien, pues esa es la forma en que se lee el teclado de ese ejemplo.
Espero que la explicación te haya servido.
Suerte.