¿Qué tal amigos?
Ya tengo algunos días en los que no he podido mostrar ningún mensaje en un LCDLM016L utilizando un PIC16F77A, les adjunto el archivo LCD.asm y LCDINC.inc junto con una imagen del circuito. Si alguien me pudiera dar una ayudadita, se los agradecería poqué ya ando un poquito atrasado con el proyectito . Gracias.
Ver el archivo adjunto Lcd.zip
Ya tengo algunos días en los que no he podido mostrar ningún mensaje en un LCDLM016L utilizando un PIC16F77A, les adjunto el archivo LCD.asm y LCDINC.inc junto con una imagen del circuito. Si alguien me pudiera dar una ayudadita, se los agradecería poqué ya ando un poquito atrasado con el proyectito . Gracias.
Ver el archivo adjunto Lcd.zip
Código:
LIST p=16F877A
INCLUDE <P16F877A.INC>
ORG 0
call INICIO
bsf STATUS,RP0
clrf TRISD
clrf TRISB
bcf STATUS,RP0
movlw 'H'
call WR_DATO
movlw 'o'
call WR_DATO
movlw 'l'
call WR_DATO
movlw 'a'
call WR_DATO
sleep
INCLUDE <LCDINC.inc> ; Subrutinas de control del módulo LCD.
END
P_DATOS equ PORTB
P_TRIS equ TRISB
P_CTRL equ PORTA
RS equ 0
RW equ 1
E equ 2
TEMP equ 0x020
INICIO
call Retardo_20ms
bsf STATUS,RP0
movlw 0x06
movwf ADCON1
clrf TRISA
bcf STATUS,RP0
clrf P_CTRL
call Retardo_50ms
movlw 38h
call WR_CMD
movlw 08H
call WR_CMD
movlw 01h
call WR_CMD
movlw 0CH
call WR_CMD
movlw 06H
call WR_CMD
return
WR_CMD
movwf TEMP
call OCUPADO
bcf P_CTRL,RW
bcf P_CTRL,RS
bsf P_CTRL,E
movf TEMP,W
movwf P_DATOS
bcf P_CTRL,E
return
WR_DATO
movwf TEMP
call OCUPADO
bcf P_CTRL,RW
bsf P_CTRL,RS
bsf P_CTRL,E
movf TEMP,W
movwf P_DATOS
bcf P_CTRL,E
return
OCUPADO
bsf STATUS,RP0
movlw 0FFh
movwf P_TRIS
bcf STATUS,RP0
bsf P_CTRL,RW
bcf P_CTRL,RS
OCUP10
bsf P_CTRL,RS
nop
movf P_DATOS,W
bcf P_CTRL,E
andlw 80h
btfss STATUS,Z
goto OCUP10
bcf P_CTRL,RW
bsf STATUS,RP0
movlw 0
movwf P_TRIS
bcf STATUS,RP0
return
INCLUDE <RETARDOS.INC>
END
Última edición por un moderador: