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: