HOLA disculpen podrian ayudarme porfavor esque tengo un problema con un microcontrolador pic16f877A y una pantalla lcd 16x2 lo que pasa es que no me quiere funcionar no me muestra los caracteres, solo pone una linea puros cuadritos y esque tambien le estoy poniendo una señal analogica al pic, esque quiero que la pantalla lcd me muetre la velocidad cuando el usuario mueva un potenciometro y esta es la señal analogica.
aqui esta mi codigo les agrdesco muchisimo su ayuda..
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'0000000'
;MOVWF TRISB
;MOVLW B'00000001'
; MOVWF TRISC
; MOVLW B'00000000'
; MOVWF TRISD
;BANCO0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;INICIA PROGRAMA;;;;;;;;;;;;;;;;;;;
CALL DELAY1SEG
CALL DELAY1SEG
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
movlw LCD_INC
call LCD_COMANDO
movlw LCD_ON
call LCD_COMANDO
movlw 80
call LCD_COMANDO
movlw 'E'
call LCD_CARACTER
movlw 'Q'
call LCD_CARACTER
movlw 'U'
call LCD_CARACTER
movlw 'S'
calL LCD_CARACTER
movlw ' '
calL LCD_CARACTER
movlw 'S'
call LCD_CARACTER
movlw 'Y'
call LCD_CARACTER
movlw 'S'
call LCD_CARACTER
movlw 'T'
calL LCD_CARACTER
movlw 'E'
call LCD_CARACTER
movlw 'M'
call LCD_CARACTER
movlw 'S'
call LCD_CARACTER
call DELAY1SEG
call DELAY1SEG
movlw 01
call LCD_COMANDO
movlw 80
call LCD_COMANDO
movlw 'H'
call LCD_CARACTER
movlw 'O'
call LCD_CARACTER
movlw 'L'
call LCD_CARACTER
movlw 'A'
calL LCD_CARACTER
movlw ' '
calL LCD_CARACTER
movlw 'B'
call LCD_CARACTER
movlw 'I'
call LCD_CARACTER
movlw 'E'
call LCD_CARACTER
movlw 'N'
calL LCD_CARACTER
movlw 'V'
call LCD_CARACTER
movlw 'E'
call LCD_CARACTER
movlw 'N'
call LCD_CARACTER
movlw 'I'
calL LCD_CARACTER
movlw 'D'
calL LCD_CARACTER
movlw 'O'
call LCD_CARACTER
call DELAY1SEG
call DELAY1SEG
call DELAY1SEG
movlw 01
call LCD_COMANDO
movlw 80
call LCD_COMANDO
movlw 'A'
call LCD_CARACTER
movlw 'Q'
call LCD_CARACTER
movlw 'U'
call LCD_CARACTER
movlw 'I'
calL LCD_CARACTER
movlw ' '
calL LCD_CARACTER
movlw 'I'
call LCD_CARACTER
movlw 'D'
call LCD_CARACTER
movlw 'I'
call LCD_CARACTER
movlw 'C'
calL LCD_CARACTER
movlw 'A'
call LCD_CARACTER
movlw 'R'
call LCD_CARACTER
movlw 'A'
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw 'L'
call LCD_CARACTER
movlw 'A'
call LCD_CARACTER
movlw 0C0
call LCD_COMANDO
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 ' '
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
call DELAY1SEG
call DELAY1SEG
call DELAY1SEG
movlw 01
call LCD_COMANDO
ATRAS NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'0' ;RESTARLE 0 A DATO
BTFSS STATUS,Z
GOTO SIGUE1
GOTO VER
VER
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 '0'
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
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
SIGUE2 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'85' ;RESTARLE 85 A DATO
BTFSS STATUS,Z
GOTO SIGUE3
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 '1'
call LCD_CARACTER
movlw '0'
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
SIGUE3 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'106' ;RESTARLE 106 A DATO
BTFSS STATUS,Z
GOTO SIGUE4
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 '1'
call LCD_CARACTER
movlw '3'
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
SIGUE4 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'127' ;RESTARLE 127 A DATO
BTFSS STATUS,Z
GOTO SIGUE5
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 '1'
call LCD_CARACTER
movlw '6'
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
SIGUE5 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'149' ;RESTARLE 149 A DATO
BTFSS STATUS,Z
GOTO SIGUE6
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 '1'
call LCD_CARACTER
movlw '9'
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
SIGUE6 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'170' ;RESTARLE 170 A DATO
BTFSS STATUS,Z
GOTO SIGUE7
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 '2'
call LCD_CARACTER
movlw '1'
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
SIGUE7 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'191' ;RESTARLE 191 A DATO
BTFSS STATUS,Z
GOTO SIGUE8
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 '2'
call LCD_CARACTER
movlw '4'
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
SIGUE8 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'213' ;RESTARLE 212 A DATO
BTFSS STATUS,Z
GOTO SIGUE9
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 '2'
call LCD_CARACTER
movlw '7'
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
SIGUE9 NOP
BCF STATUS,Z
BSF ADCON0,GO ;COMIENZA LA CONVERSION
CALL PAUSA
BCF STATUS,Z
MOVF DATO,W
BCF STATUS,Z
SUBLW D'234' ;RESTARLE 233 A DATO
BTFSS STATUS,Z
GOTO SIGUE10
movlw 80
call LCD_COMANDO
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw ' '
call LCD_CARACTER
movlw 'V'
calL LCD_CARACTER
&