Buenas, tengo mi circuito armado para transmitir datos a traves del puerto serial (rs232) con MAX232, uso el PIC16F877A. Mi problema es que cuando mando un dato al computador, éste se repite infinitamente (en el hyperterminal), yo solo quiero que se muestre una vez y pare.
El codigo es muy simple:
LIST P=16F877A
INCLUDE <P16F877A.INC>
CONT EQU 20
DATO EQU 21
TRUCO EQU 22
DATO_A EQU 23
DATO_B EQU 24
ORG 0x00
GOTO INICIO
ENVIAR CALL E5MS
BANKSEL SPBRG
MOVLW .25
MOVWF SPBRG
BSF TXSTA,BRGH
BANKSEL RCSTA
BCF RCSTA,SYNC
BSF RCSTA,SPEN
BANKSEL TXSTA
BCF TXSTA,TX9
BSF TXSTA,TXEN
BANKSEL TXREG
MOVF DATO,0
MOVWF TXREG
REP BTFSS PIR1,TXIF
GOTO REP
BCF PIR1,TXIF
RETURN
MENSAJE ADDWF PCL,1
RETLW "J"
RETLW "u"
RETLW "l"
RETLW "i"
RETLW "a"
RETLW "n"
RETLW " "
RETLW "A"
RETLW "n"
RETLW "d"
RETLW "r"
RETLW "e"
RETLW "s"
RETLW " "
INICIO BSF STATUS,5
CLRF TRISC
BCF STATUS,5
CLRF CONT
CLRF DATO
MOVLW .14
MOVWF TRUCO
GOTO LEER
LEER MOVF CONT,0
CALL MENSAJE
MOVWF DATO
MOVF CONT,0
SUBWF TRUCO,0
BTFSC STATUS,2
GOTO FIN
CALL ENVIAR
INCF CONT,1
GOTO LEER
;E5MS genera una temporizacion de 5mS
E5MS MOVLW 0x1a
MOVWF DATO_B
CLRF DATO_A
DELAY_1 DECFSZ DATO_A,1
GOTO DELAY_1
DECFSZ DATO_B,1
GOTO DELAY_1
RETURN
FIN NOP
END
En este caso me muestra "julian andres" mil veces, sabiendo que solo quiero que me la muestre una sola vez. Alguien puede ayudarme ?, que me falta o que estoy haciendo mal ?
Gracias