Hola a todo el mundo
tuve un problemon...hace poco compre mi 3er PIC (me gustan los 16F628), y venia todo bien, estuve boludeando un rato, haciendo pruebas de retardos, contadores con un 74LS47, hasta que tuve la bendita idea de meterme con un display LCD
Guiado por un libro el cual creo que no me va a guiar mas

hice todo el conexionado el cual parecia correcto, ya que seguí el orden de las patas y pude regular el brillo sin problema, no solo eso, corroboré el pinout con la hoja de datos del controlador (creo que ya es un clásico en materia de LCDs, el HD44780 de Hitachi, lo oi nombrar mucho)...todo muy bonito..hice un programa bastante simplón para, al menos, resetear el LCD y que no aparezca la mitad vacia y la mitad con un caracter completo (es un 1x16 sacado de una impresora vieja..segun mi profesor de computacion, estos LCDs manejan la segunda parte [los 8 caracteres de mayor peso] como si fuese una segunda linea, porque será no lo se)....
Adjuntoles el programa
Cita:
LIST P=16F628
#INCLUDE<P16F628.inc>
#DEFINE RS PORTA,0
#DEFINE RW PORTA,1
#DEFINE E PORTA,2
__config 0x3f10
CBLOCK H"20"
CounterA
CounterB
ENDC
ORG H"00"
goto inicio
retardo
;PIC Time Delay = 0,0400020 s with Osc = 4,000000 MHz
movlw D"52"
movwf CounterB
movlw D"241"
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
return
inicio
movlw B"00000111"
movwf CMCON
bsf STATUS, RP0
clrf TRISA
clrf TRISA
bcf STATUS, RP0
;iniciamos los estados
clrf PORTA
clrf PORTB
bucle
;iniciamos el display
movwf B"00000001"
movlw PORTB
bcf RS
bcf RW
bsf E
call retardo
;devolvemos a 0
clrf PORTA
clrf PORTB
call retardo
goto bucle
END
El tema es que el maldito LCD no se reseteaba...pensé en que tal vez cuando mandaba la señal, el LCD no se habia iniciado correctamente, entonces armé el bucle que puden ver en el programa, para que se resetee continuamente, pero nada...
Se me ocurrio "debuggear" colgando una punta lógica...si leyeron el programa se dieron cuenta que por PORTB sacaba la data, mientras que por los 3 primeros bits de PORTA sacaba RS, RW y E en ese orden...
Al poner la punta lógica en RA2 oscilaba correctamente...pero al poner la punta lógica en cualquier pin de PORTB tenía cualquier estado menos el que le habia sacado por software (debería haber sido B"00000001"), por lo tanto deducí que el mismo LCD estaba sacando estados...
El tema es...desde ese momento (como era de esperarse) no reacciona mas el IC...si lo programo en ic-prog no me da las verificaciones, y si pongo la punta lógica cuando el IC esta vacio me da en estado bajo PORTA y en estado alto PORTB
En definitiva, me quiero matar, pero porque habra sido eso??...
$12.50 a la basura

odio la electronica
