Hola a todos, mi problema es mando a imprimir algo en el lcd pero no aparece hasta que toco el pin de RB7 con algo metálico o mi dedo, supongo que porque hace tierra o algo parecido.
Este es el código.
Lo que yo supongo es que el display no manda el cero que debería mandar cuando se desocupa para que así el pic comience a mandarle los comandos y cuando lo toco con algo metálico el RB7 se va a tierra y todo empieza a funcionar el micro manda los comandos y el lcd manda el RB7 a cero cuando se desocupa. De verdad les agradecería mucho algo de orientación ya que llevo días atorado en esto relativamente simple. De antemano gracias.
Este es el código.
Código:
PROCESSOR 16F887
INCLUDE P16F887.INC
CONT1 EQU 020
CONT2 EQU 021
RETARDO EQU 022
;COMANDO EQU 023
;DATO EQU 024
ORG 0
GOTO PRINCIPAL
ORG 004
;============RUTINA DE INTERUPCION========================
;=========================================================
PRINCIPAL
;//////////////////////PROGRAMA PRINCIPAL/////////////////////
;==========INICIALIZACION DE PUERTOS============
BSF STATUS,RP0
BSF STATUS,RP1
CLRF ANSELH
BCF STATUS,RP1
MOVLW 0FF
MOVWF TRISB
MOVLW 0E3
MOVWF TRISD
BCF STATUS,RP0
CLRF PORTD
;===============================================
MOVLW .250
CALL INIRET
MOVLW .250
CALL INIRET
CALL READ
MOVLW 033
CALL OPCOM
CALL READ
MOVLW 033
CALL OPCOM
CALL READ
MOVLW 038
CALL OPCOM
CALL READ
MOVLW 00C
CALL OPCOM
CALL READ
MOVLW 006
CALL OPCOM
CALL READ
MOVLW 001
CALL OPCOM
FIN
CALL READ
MOVLW 081
CALL OPCOM
CALL READ
MOVLW 'E'
CALL OPDAT
CALL READ
MOVLW 'F'
CALL OPDAT
CALL READ
MOVLW 'G'
CALL OPDAT
CALL READ
MOVLW 'H'
CALL OPDAT
GOTO FIN
;==========SUBRUTINA DE LECTURA===============================
READ
BCF PORTD,2;RS=0
BSF PORTD,3;W=1
BUCLE1 BSF PORTD,4;E=1
MOVF PORTB,W
BCF PORTD,4;E=0
BTFSC PORTB,7
GOTO BUCLE1
RETURN
;=============SUBRRUTINA: OPERACION DE ESCRITURA DE COMANDO============
OPCOM
BSF STATUS,RP0
CLRF TRISB
BCF STATUS,RP0
BCF PORTD,3;WR=0
BCF PORTD,2;RS=0
BSF PORTD,4;E=1
CLRF PORTB
MOVWF PORTB
BCF PORTD,4;E=0
BSF PORTD,2;RS=1
BSF STATUS,RP0
MOVLW 0FF
MOVWF TRISB
BCF STATUS,RP0
RETURN
;=============SUBRRUTINA: OPERACION DE ESCRITURA DE DATO=============
OPDAT
BSF STATUS,RP0
CLRF TRISB
BCF STATUS,RP0
BCF PORTD,3;WR=0
BSF PORTD,2;RS=1
BSF PORTD,4;E=1
CLRF PORTB
MOVWF PORTB
BCF PORTD,4;E=0
BCF PORTD,2;RS=0
BSF STATUS,RP0
MOVLW 0FF
MOVWF TRISB
BCF STATUS,RP0
RETURN
;===========SUBRRUTINA: RETARDO===================
INIRET
MOVWF CONT1
MOVWF CONT2
RET
DECFSZ CONT1,1
GOTO RET
DECFSZ CONT2,1
GOTO RET
RETURN
END
Última edición: