Disculpen otra vez hola, ahi posteo el .inc
LIST
;#############################################################
; Fichero : LCD1602.inc #include
; Autor : Juan Mu¤oz.
; Fecha: Abril 2001.
; Versi¢n: 0.0
; Funci¢n : Subrutinas para el Control de un LCD1602.
;#############################################################
NOLIST
;-------------------------------------------------------------
; Rutinas de presentaci¢n de mensajes en LCD
;-------------------------------------------------------------
DATO_A EQU 0x0C ;Variable de temporizaci¢n
DATO_B EQU 0x0D ;Variable de temporizaci¢n
;-------------------------------------------------------------
;LCD_BUSY: Lectura del Flag busy & direcci¢n.
;-------------------------------------------------------------
LCD_BUSY bsf PORTA,1 ;Pone el LCD en modo lectura
bsf STATUS,5 ;Selecciona el banco 1
movlw 0xff
movwf TRISB ;Puerta B como entrada
bcf STATUS,5 ;Selecciona el banco 0
bsf PORTA,2 ;Activa el LCD
nop
L_BUSY btfsc PORTB,7 ;Chequea bit de Busy
goto L_BUSY
bcf PORTA,2 ;Desactiva LCD
bsf STATUS,5 ;Selecciona banco 1
clrf TRISB ;Puerta B salida
bcf STATUS,5 ;Selecciona el banco 0
bcf PORTA,1 ;Pone LCD en modo WR
return
;-------------------------------------------------------------
;LCD_E: Pulso de Enable
;-------------------------------------------------------------
LCD_E bsf PORTA,2 ;Activa se¤al E
nop ;Espera 1 uS
bcf PORTA,2 ;Desactiva se¤al E return ;
;-------------------------------------------------------------
;LCD_DATO: Escritura de datos en DDRAM o CGRAM
;-------------------------------------------------------------
LCD_DATO bcf PORTA,0 ;Desactiva RS (modo comando)
movwf PORTB ;Valor ASCII a sacar por PORTB
call LCD_BUSY ;Espera a que se libere el LCD
bsf PORTA,0 ;Activa RS (modo dato).
goto LCD_E ;Genera pulso en la se¤al E
;-------------------------------------------------------------
;LCD_REG: Escritura de comandos en el LCD
;-------------------------------------------------------------
LCD_REG bcf PORTA,0 ;Desactiva RS (modo comando)
movwf PORTB ;Saca el c¢digo de la instrucci¢n
call LCD_BUSY ;Espera se libere el LCD
goto LCD_E ;Genera pulso en la se¤al E ;
;-------------------------------------------------------------
;LCD_INI: Inicializaci¢n del LCD
;-------------------------------------------------------------
LCD_INI movlw b'00111000' ;Caracteres 5-7,datos de 8 bits.
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
movlw b'00111000'
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
movlw b'00111000'
call LCD_REG ;C¢digo de instrucci¢n
call DELAY_5MS ;5ms.(Especificaci¢n de Fabricante)
return
;-------------------------------------------------------------
;DELAY_5MS: Genera una temporizaci¢n de 5 mS
;-------------------------------------------------------------
DELAY_5MS movlw 0x1a
movwf DATO_B ;Carga la variable DATO_B
clrf DATO_A ;Carga la variable DATO_A
DELAY_1 decfsz DATO_A,1 ;Decrementa la variable DATO_A
goto DELAY_1
decfsz DATO_B,1 ;Decrementa la variable DATO_B
goto DELAY_1
return LIST
Como soy nuevo en esto de los PIC y mi conocimiento es de aficionado, les solicito la colaboracion en sacar este proyecto.
Gracias.