Configuración ADCON1

#1
Tengo el siguiente circuito montado, estoy empezando con la parte de un LCD y teclado matricial,
pero no hace nada el proteus, solo me manda muchos mensajes de "whilst busy"
Dí con el problema y aparentemente es porque no he configurado el ADCON que tiene que ver con indicarle al puerto A que será usado cómo salidas digitales.

El código arreglado es este, pero aún así sigo teniendo el mismo error.
Código:
ADCON1=%00000110
TRISA =  %00000000 
TRISB =  %00000000 
TRISD =  %01111000 
VAR1 VAR Byte 
var1 = 0 
Pause 200 
Lcdout $fe, 1 
Lcdout $fe, 2
Lcdout "* Pantalla LCD *"
Lcdout $fe,$C0, "* Teclado Mat. *"
PAUSE 3000 
Inicio:
Call Teclado
Lcdout $fe, 2 
Lcdout "Tecla Pulsada: "
Lcdout $fe,$C0, "--> ",#var1," "
GoTo Inicio
Teclado:
PORTD.0 = 0 
PORTD.1 = 1 
PORTD.2 = 1 
If PORTD.3 = 0 Then VAR1 = 1 
If PORTD.4 = 0 Then VAR1 = 4 
If PORTD.5 = 0 Then VAR1 = 7 
If PORTD.6 = 0 Then VAR1 = 10 
PORTD.0 = 1 
PORTD.1 = 0 
PORTD.2 = 1 
If PORTD.3 = 0 Then VAR1 = 2 
If PORTD.4 = 0 Then VAR1 = 5 
If PORTD.5 = 0 Then VAR1 = 8 
If PORTD.6 = 0 Then VAR1 = 11 
PORTD.0 = 1 
PORTD.1 = 1 
PORTD.2 = 0 
If PORTD.3 = 0 Then VAR1 = 3 
If PORTD.4 = 0 Then VAR1 = 6 
If PORTD.5 = 0 Then VAR1 = 9 
If PORTD.6 = 0 Then VAR1 = 12 
Return 
End
 

Adjuntos

Última edición por un moderador:
#2
podrias subir los archivos en un zip.

faltan datos como que compilador usas, que pic usas, porque no pones antirrebote en el teclado, estas poniendo resistencia en el MCLR?, porque no desplegas en el LCD solo cuando pulses?, etc, etc.
 
Última edición:
#3
Sip, falta el PIC y parece Basic... Sobre el aviso en proteus es porque el PIC está enviando datos al LCD demasiado rápido y éste se encuentra ocupado... ¿A que frecuencia trabajas? configura la misma frecuencia en el compilador y proteus....
 
#4
ok, acá te pongo un esquema que tengo montado, te presento la conexion que tuve que hacer para que funcione (en otro puerto donde NO hay que modificar el adcon1)
Efectivamente es Basic, estoy usando el MicrocodeStudio
 

Adjuntos

Última edición:
#5
pues es todo lo que te mencione:

los antirrebotes, el lcd, y el MCLR sin resistencia... quizas hasta tienes mal definido el oscilador.
 
#6
se que a la simulación le hace faltan ciertos dispositivos para que sea mas real a la hora de realizar el montaje, de momento las prácticas que he hecho las he realizado de esta manera. claro que cuando lo monte en vida real si debo tomar en cuenta todo lo que me estas diciendo, pero esto lo estoy haciendo de manera digamos didáctica para aprender mas que todo el manejar el lenguaje, la cuestión en si es que a medida que he realizado las prácticas no me habia topado con este problema porque nunca use el puerto A, como te dije anteriormente cambie de lugar el LCD y me funciona perfectamente tal como lo establece el código fuente sin problemas
 
#8
La esencia del tema en si es que tengo un problema al configurar el ADCON1, tengo entendido que este registro como anexe en la imagen tiene que ser configurado para indicar que el puertoA sea usado como E/S Digitales, realice esa configuración pero se me presenta el problema que coloque al inicio del hilo del tema; lo que hice fue que cambiando el LCD de puerto fino se arregla, con esto reincido en que mi problema es la configuración de mi ADCON1, la idea es saber que tengo mal para así en un futuro usar el puerto cuando se me antoje no simplemente cambiarlo a otro puerto.
 
#9
Más bien es raro por que el pin MCLR si necesita conectarlo a (+), lo que no es necesario es el cristal oscilador ya que el mismo no simula.

Si usas el PORTA con el LCD, hay un detalle con el PIN RA4... éste es open-drain, solo pone a cero lógico como pin de salida, por lo que es necesrio colocar una resistencai pull-up (+) para conseguir 1 lógico.
 
#10
Ah correcto, ese era el detalle compañero.. Ya lo probe colocanco la resistencia de pull-up y funciona según lo especificado.. Gracias por la corrección y las sugerencias serán bienvenidas.. acá coloco rápidamente el circuito corregido !
 

Adjuntos

Temas similares

Arriba