Hola amigos,
soy nuevo en esto de los pics y me he puesto a controlar un display LCD. Lo que me ocurre es lo que comenta Radon en su respuesto, se inicializa el LCD y la primera linea se queda en blanco, creia que era culpa de la conexion, pero por lo visto es problema de que nos se ha inicializado.
Os pongo aqui el programa que lo controla.
Gracias
;************************************** LCD_08.asm ************************************
;
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
www.pic16f84a.com; Editorial Ra-Ma.
www.ra-ma.es; ===================================================================
;
; Mientras se mantenga presionado el pulsador conectado al pin RA4, se incrementa un contador
; visualizado en la pantalla en tres formatos: decimal, hexadecimal y binario. Un ejemplo:
; Primera Línea: "CE 206"
; Segunda Línea: "11001110"
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
Contador ; El contador a visualizar.
Auxiliar
Desplaza
ENDC
#DEFINE Pulsador PORTA,4 ; Línea donde se conecta el pulsador.
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0.
Inicio
call LCD_Inicializa
bsf STATUS,RP0
bsf Pulsador ; Línea del pulsador configurada como entrada.
bcf STATUS,RP0
clrf Contador ; Inicializa el contador y
call VisualizaContador ; lo visualiza.
Principal
btfsc Pulsador ; Lee el pulsador.
goto Fin ; Si no pulsa salta a final.
call Retardo_20ms ; Espera a que se estabilicen los niveles de tensión.
btfsc Pulsador ; Vuelve a leer el pulsador.
goto Fin
incf Contador,F ; Incrementa el contador.
call VisualizaContador
call Retardo_200ms ; Se incrementará de nuevo cuando pase este
Fin
goto Principal ; tiempo.
; Subrutina "VisualizaContador" --------------------------------------------------------
VisualizaContador
call LCD_Borra ; Borra la pantalla.
movf Contador,W ; A continuación visualiza el contador.
call LCD_ByteCompleto ; Visualiza en hexadecimal.
call LCD_TresEspaciosBlancos ; Como separador.
movf Contador,W ; Ahora se visualiza en decimal.
call BIN_a_BCD ; Primero se convierte a BCD.
movwf Auxiliar ; Guarda las decenas y unidades.
movf BCD_Centenas,W ; Visualiza centenas.
call LCD_Nibble
movf Auxiliar,W ; Visualiza las decenas y unidades.
call LCD_ByteCompleto
;
call LCD_Linea2 ; En la segunda línea para visualizar en binario.
movlw .8 ; Utiliza el registro auxiliar como contador del
movwf Auxiliar ; número de bits que se va visualizando por la
movf Contador,W ; pantalla.
movwf Desplaza
VisualizaBit
rlf Desplaza,F ; El bit a visualizar pasa al Carry .
movlw "1" ; En principio supone que es un uno.
btfss STATUS,C ; Comprueba su valor.
movlw "0" ; Ha sido cero.
call LCD_Caracter ; Lo visualiza.
decfsz Auxiliar,F ; ¿Ha terminado de visualizar los 8 bits?
goto VisualizaBit ; No, sigue visualizando otro bit.
return
INCLUDE <LCD_4BIT.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <BIN_BCD.INC>
END
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
www.pic16f84a.com; Editorial Ra-Ma.
www.ra-ma.es; ===================================================================