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: