Buen día.
Estoy haciendo un programa en ensamblador que requiere mostrar mensajes en un display lcd 16x2 con un pic16f84.
El caso es que los mensajes me aparecen cortados a la mitad, es decir, solo se muestra la mitad del mensaje y estoy desconfiando de un problema en el display ya que probé varios programas y en todos hace lo mismo.
Por desgracia no tengo otro display para probar.
Adjunto el código, obvié toda la otra parte del proceso solo deje la primer parte en donde muestra mensajes de inicio.
Gracias.
Estoy haciendo un programa en ensamblador que requiere mostrar mensajes en un display lcd 16x2 con un pic16f84.
El caso es que los mensajes me aparecen cortados a la mitad, es decir, solo se muestra la mitad del mensaje y estoy desconfiando de un problema en el display ya que probé varios programas y en todos hace lo mismo.
Por desgracia no tengo otro display para probar.
Adjunto el código, obvié toda la otra parte del proceso solo deje la primer parte en donde muestra mensajes de inicio.
Gracias.
Código:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A ;Tipo de procesador
INCLUDE <P16F84A.INC> ;Definiciones de registros internos
CBLOCK 0x0C ;define direcciones de variables
volumen ;contador del modo "volumen"
graves ;contador de modo "graves"
agudos ;contador de modo "agudos"
byte ;guarda el byte generado en la tabla
byte_reg ;registro que guarda los bytes a enviar
contador ;contador multiproposito
endc ;termina definiciones de variables
#DEFINE modo PORTA,2 ; Línea donde se conecta el pulsador modo.
#DEFINE incrementa PORTA,3 ; Línea donde se conecta el pulsador incrementa.
#DEFINE decrementa PORTA,4 ; Línea donde se conecta el pulsador decrementa.
org 0x00
;**aqui se realizan las primeras configuraciones******
Inicio
call LCD_Inicializa ;inicializa el display
movlw Mensaje0 ;mueve un mensaje al lcd
call LCD_Mensaje ;llama a la subrutina para mostrar el mensaje
call Retardo_500ms ;retardos
call Retardo_500ms
call Retardo_500ms
call Retardo_200ms
call LCD_Linea2 ;se sitúa en la línea 2
movlw Mensaje6 ;mueve el mensaje
call LCD_Mensaje ;llama a la subrutina para mostrar el mensaje
call Retardo_500ms ;retardos
call Retardo_500ms
call LCD_Borra ;borra el display
call Retardo_500ms ;retardos
call Retardo_500ms
call LCD_Linea2 ;muestra otra vez el mismo mensaje para producir
movlw Mensaje6 ;efecto de parpadeo
call LCD_Mensaje
call Retardo_500ms
call Retardo_500ms
bsf STATUS,RP0 ;Selecciona banco 1.
bsf modo ; Línea del pulsador se configura como entrada. bsf incrementa ; Línea del pulsador se configura como entrada.
bsf decrementa ; Línea del pulsador se configura como entrada.
bcf STATUS,RP0 ;Selecciona banco 0
movlw 0x01
movwf volumen ;pone el contador a 1
movlw 0x08
movwf graves ;pone a 8 los contadores
movwf agudos goto Inicio
INCLUDE <BUS_I2C.INC>
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
INCLUDE <BIN_BCD.INC>
END
Última edición por un moderador: