hola QIQE si ya revise eso y no me funciona, cres estoy inicalizando mal la lcd mira aqui esta una parte del programa no lo puse todo es que esta muy grande pero aqui muestra la parte donde inicializa la lcd y la convercion analogica. GRACIAS SALUDOS.
LIST p=16F877A
;__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_ON & _CPD_OFF
CICLO1 EQU 0X20
CICLO2 EQU 0X21
CICLO3 EQU 0X22
CICLO4 EQU 0X31
CICLO5 EQU 0X32
CICLO6 EQU 0X33
TEMP EQU 0X25
DATO EQU 0X30
#DEFINE BANCO0 BCF STATUS,5 ;SE DEFINE LA INSTRUCCIÓN BANCO0
#DEFINE BANCO1 BSF STATUS,5 ;SE DEFINE LA INSTRUCCIÓN BANCO1
STATUS EQU 0X03
PORTD EQU 0X08
PORTB EQU 0X06
TRISD EQU 0X88
TRISB EQU 0X86
LCD_LINEA1 EQU 80
LCD_LINEA2 EQU 0C0
LCD_CLR EQU 01
LCD_CASA EQU 02
LCD_INC EQU 06
LCD_DEC EQU 04
LCD_ON EQU 0C
LCD_OFF EQU 08
CURSOR_ON EQU 0E
CURSOR_OFF EQU 0C
CURSOR_PARP EQU 0F
LCD_IZDA EQU 18
LCD_DECHA EQU 1C
CURSOR_IZDA EQU 10
CURSOR_DECHA EQU 14
LCD_FUNCIÓN EQU 38
LCD_CGRAM EQU 40
CBLOCK 0x0D
ENDC
ORG 0X00 ;VECTOR DE RESET Ó ENCENDIDO DEL PIC
GOTO INICIO ;SALTA A LA ETIQUETA INICIO
ORG 0X04 ;VECTOR DE INTERRUPCION
GOTO INTERRUP ;SALTA A LA ETIQUETA INTERRUP
;ORG 0X10
INICIO
CALL INI_AD
CALL INI_PWM
CALL SETUPDELAY ;TIEMPO NECESARIO PARA LA CAPTURA DEL
CALL SETUPDELAY ;VALOR ANALOGICO A CONVERTIR
BANCO1
MOVLW B'00000000'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'00000000'
MOVWF TRISD
BANCO0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INICIA PROGRAMA;;;;;;;;;;;;;;;;;;;
CALL PAUSA_5ms
BCF PORTC,5
Call DELAY1SEG
bsf STATUS,RP0
movlw b'00011000'
movwf TRISD
clrf TRISB
bcf STATUS,RP0
clrf PORTD
clrf PORTB
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_FUNCIÓN
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_CLR
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_INC
call LCD_COMANDO
call PAUSA_5ms
movlw LCD_ON
call LCD_COMANDO
call PAUSA_5ms
SIGUE1 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'42' ;RESTARLE 42 A DATO
BTFSS STATUS,Z
GOTO SIGUE2
movlw 80
call LCD_COMANDO
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw 'V'
calL LCD_CARACTER
movlw 'E'
calL LCD_CARACTER
movlw 'L'
call LCD_CARACTER
movlw 'O'
call LCD_CARACTER
movlw 'C'
call LCD_CARACTER
movlw 'I'
calL LCD_CARACTER
movlw 'D'
call LCD_CARACTER
movlw 'A'
call LCD_CARACTER
movlw 'D'
call LCD_CARACTER
movlw 0C0
call LCD_COMANDO
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw '5'
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw 'K'
call LCD_CARACTER
movlw 'M'
call LCD_CARACTER
movlw '/'
call LCD_CARACTER
movlw 'H'
call LCD_CARACTER
movlw 'r'
call LCD_CARACTER
GOTO ATRAS
subrutinas de la LCD Y PARA LA CONVERCION ANALOGICA.
CBLOCK
CONTA1
CONTA2
GUARDA_CARÁCTER
ENDC
PAUSA_5ms
movlw 64
movwf CONTA2
clrf CONTA1
RETRASO1
decfsz CONTA1,1
goto RETRASO1
decfsz CONTA2,1
goto RETRASO1
return
LCD_COMANDO
clrf PORTD
movwf PORTB
call LCD_CHEQUEA
goto LCD_HABILITA
LCD_CARACTER
clrf PORTD
call LCD_CARÁCTER_ESPECIAL
movwf PORTB
call LCD_CHEQUEA
bsf PORTD,0
goto LCD_HABILITA
LCD_CARÁCTER_ESPECIAL
movwf GUARDA_CARÁCTER
sublw 'ñ'
btfss STATUS,Z
goto LCD_EÑE_MAYÚSCULA
movlw b'11101110'
movwf GUARDA_CARÁCTER
goto LCD_FIN_CARACTER_ESP
LCD_EÑE_MAYÚSCULA
movfw GUARDA_CARÁCTER
sublw 'Ñ'
btfss STATUS,Z
goto LCD_GRADO
movlw b'11101110'
movwf GUARDA_CARÁCTER
goto LCD_FIN_CARACTER_ESP
LCD_GRADO
movfw GUARDA_CARÁCTER
sublw 'º'
btfss STATUS,Z
goto LCD_FIN_CARACTER_ESP
movlw b'11011111'
movwf GUARDA_CARÁCTER
LCD_FIN_CARACTER_ESP
movfw GUARDA_CARÁCTER
return
LCD_CHEQUEA
bsf STATUS,RP0
movlw 0FF
movwf TRISB
bcf STATUS,RP0
bcf PORTD,0
bsf PORTD,1
BUCLE
bsf PORTD,2
movf PORTB,0
bcf PORTD,2
addlw 84
btfsc STATUS,C
goto BUCLE
bsf STATUS,RP0
clrf TRISB
bcf STATUS,RP0
bcf PORTD,1
return
LCD_HABILITA
bsf PORTD,2
nop
nop
bcf PORTD,2
return
;-------------------------------
;-------------------------------
;-------------------------------
;PROGRAMA PARA LA ACTIVACION DE LA CONVERCION ANALOGICA.
INTERRUP BTFSS PIR1,ADIF
RETFIE
MOVF ADRESH,W
MOVWF DATO
BCF PIR1,ADIF
CALL SETUPDELAY
RETFIE
INI_AD BANCO1
MOVLW B'01000100' ;RA3,RA1,RA0 SON ENTRADAS DEL CONVERTIDOR
MOVWF ADCON1 ;CONVERSION GUARDADA EN ADRESHL
BSF PIE1,ADIE ;HABILITAR LAS INTERRUPCIONES A/D.
BANCO0
MOVLW B'10000001' ;SELECCION DEL RELOJ DE CONVERSION Fosc / 64,MODULO DE CONVERSOIN ACTIVO
MOVWF ADCON0 ;Y SELECCION DEL CANAL 0 (RA0/AN0)
BCF PIR1,ADIF ;LIMPIAR FLAG DE INTERRUPCION
BSF INTCON,PEIE ;HABILITAR INTERRUPCIONES DE PERIFERICOS
BSF INTCON,GIE ;HABILITAR INTERRUPCIONES GLOBALES
RETURN
INI_PWM BANCO1
MOVLW 0X3F
MOVWF PR2
BCF TRISC,2
BANCO0
MOVLW B'000000000'
MOVWF CCPR1L
BCF CCP1CON,CCP1X
BCF CCP1CON,CCP1Y
MOVLW B'000000100'
MOVWF T2CON
BSF CCP1CON,CCP1M3
BSF CCP1CON,CCP1M2
RETURN
SETUPDELAY MOVLW 0X50
MOVWF TEMP
SD DECFSZ TEMP,F
GOTO SD
RETURN
PAUSA CLRF CICLO1
CLRF CICLO2
PAU DECFSZ CICLO2,F
GOTO PAU
DECFSZ CICLO1,F
GOTO PAU
RETURN
DELAY1SEG MOVLW 0XF0
MOVWF CICLO4
DEL03 MOVLW 0XF0
MOVWF CICLO5
DEL04 MOVLW 0X05
MOVWF CICLO6
DEL05 DECFSZ CICLO6,F
GOTO DEL05
DECFSZ CICLO5,F
GOTO DEL04
DECFSZ CICLO4,F
GOTO DEL03
RETURN
RETURN
END