TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Juan_PIC en 23 de Enero de 2008, 20:24:14
-
Hola a todos. Estoy con un problema. Estoy intentando tomar los datos del un teclado de 3x4 en proteus. Las columnas (3) las pongo en los pines RB1, RB2 y RB3
y las filas (4) en los pines RB7:RB4, De manera que al pulsar una tecla, la informacion pase de los pines 1, 2 y 3 a los 4, 5, 6 y 7.
Tengo los pines 1 al 3 como salidas y se encuentran en 0, y los pines del 4 al 7 como entradas y con los pull-up internos.
Entre los pines 1, 2 y 3 y las columnas tengo puestas unas resistencias. El problema es que el circuito no funciona con dichas resistencias (no importa el valor). El circuito solo anda si conecto directamente los pines al teclado. Por que pasara esto? Yo quiero poner las resistencias para limitar la corriente, y porque en todos los ejemplos de matriz que vi, siempre ponen resistencias. Alguna sugerencia?
-
mi estimado motordecontinua, ese programa lo estas simulando en el proteus? me gustaria saber si es asi para poder ayudarte mas efectivamente :D
-
Asi es poseidon, aqui dejo el circuito y el codigo en ensamblador.
(Tiene rutinas en lcd que no vale la pena revisar, el problema es de hardware estimo yo o en todo caso alguna fallita en proteus)
http://rapidshare.com/files/86074460/Teclado.rar.html
-
Bueno el teclado en la simulacion funciona tal como esta, pero en lo real le puedes poner esas resistencias cuando vas a usar ese mismo puerto para otros fines, yo tambien pase por ese problema del teclado y las resistencias, y parece que el proteus no se lleva bien con esa configuracion, con respecto a tu programa, no entiendo lo que tratas de hacer en el, por lo que e podido observar, es que estas tratando de sensar el valor de la tecla y de acuerdo a eso poder verlo en el LCD, si es eso estas tratando mal el asunto, otra cosa que veo es que mientras esperas que se ´pulse una tecla estas constantemente limpiando la pantalla, es no es necesario ya qeu asi vas a acargar mas al simulador, te recomensaria que trataras de atender el teclado y el RB0 por interrupciones y cuando se produsca algo recien atienda ese evento, mientras espera podrias poner al pic a dormir. es una sugerencia.
-
despues de ver mas detenidamente tu programa, veo que no estas tratando adecuadamnete la interrupcion para el teclado, es decir pulse al tecla que pulse en el teclado el programa piensa que es interrupcion por RB0, te recomiendo que uses el buscador de este foro para que veas la aplicaciones que desarrollaron otros foreros, si no encuentras nada te puedo colocar un ejemplo de sensar el estado la tecla pulsada y visulizarlo en el LCD :mrgreen:, de ahi tu lo adpatarias para tus necesidades
-
Poseidon, en realidad necesito estas dos interrupciones. Mi idea es hacer una cerradura electronica. La interrupcion por RB0 la utilizare para desplegar un mensaje en la pantalla mientras esta patilla se encuentre en 0.
Aqui hasta donde he llegado. El problema es que por alguna razon en esta parte de la interrupcion cuando configuro el trisb y el portb, estos no toman los valores que yo quiero (segun veo en el visor de variables del proteus) y por lo tanto la lectura de los pines RB3:RB1 (LECTURA_31) es incorrecta.
SWAPF PORTB,W
ANDLW B'00001111'
MOVWF LECTURA_74
MOVLW B'00001111'
MOVWF TRISB
MOVLW B'11110000'
MOVWF PORTB
MOVF PORTB,W
ANDLW B'00001110'
MOVWF LECTURA_31
RRF LECTURA_31,F
http://rapidshare.com/files/86125281/Cerradura2.asm.html
-
Ya encontre el error.... No cambie al banco 1 para configurar el tris. Lo que hace el cansancio Dios! Muchas gracias poseidon!
-
Para eso estamos amigo, y vamos, hechale ganas al proyecto, yo tabien padeci con algo parecido a lo tuyo solo que el mio aparte de eso tenia que comunicarse con la PC y un sistema que monitoreaba y hacia reportes de lo mismo, es decir nada facilito pero ya esta avanzando el proyecto.
Una cosa mas, te recomiendo que no estes duplicando temas ya que eso va en contra de las reglas de foro, ya que hicistes otro tema igual a este. No te decesperes en que te respondan, ya que muchos de aca trabajan y por eso no pueden responderte inmediatamente, ellos hacen un esfuerzo en dar un poco de su tiempo para poder mantener este foro.
-
Lo se, lo siento. En realidad abri dos temas porque supuse que eran dos problemas distintos. Igualmente el otro tema lo he eliminado ya. Gracias por avisar y por tu ayuda! Mucha suerte en tu proyecto. :mrgreen: