Realice un programa para mandar dos datos del pc al pic y otro programa para mandar 2 datos del pic al pc. Los 2 funcionaban bien pero cuando los uni paso algo raro.
El programa espera 2 datos del pc y los pone en 2 posiciones de memoria (DIRECCION Y DATO) Luego pone el dato en la puerta B y los vuelve a transmitir al pc.
El problema esta cuando el pic los devuelve al pc ya que no manda 2 datos sino 4. Manda DIRECCION, DIRECCION, DATO, DATO en ese orden.
El programa es este.
LIST p=16F876
__CONFIG H"3F72"
RADIX HEX
include "P16F876.INC"
DIRECCION EQU 24h
DATO EQU 26H
org 0
goto INICIO
org 0x04
INICIO bsf STATUS,RP0 ;BANCO 1
movlw b"10111111"
movwf TRISC
clrf TRISB
movlw b"00100000"
movwf TXSTA
movlw .25
movwf SPBRG
bcf STATUS,RP0 ;BANCO 0
clrf TMR1L ;Limpia L
clrf TMR1H ;Limpia H
movlw b"10010000" ;Configuracion de la usart
movwf RCSTA ;para recepcion continua
BUCLE BTFSS PIR1,RCIF ;SE HA RECIVIDO ALGO?
GOTO BUCLE
MOVF RCREG,W ;RECIVE DIRECCION
MOVWF DIRECCION
MOVF RCREG,W ;RECIVE DATO
MOVWF DATO
MOVWF PORTB
MOVF DIRECCION,W ;TRANSMITE DIRECCION
MOVWF TXREG
MOVF DATO,W ;TRANSMITE DATO
MOVWF TXREG
BSF STATUS,RP0 ;BANCO 1
TRANSMI BTFSS TXSTA,TRMT ;ESPERA QUE TERMINE DE TRANSMITIR
GOTO TRANSMI
BCF STATUS,RP0 ;BANCO 0
GOTO BUCLE
END
¿Si solo envio dos datos porque llegan 4? ¿Alguien se le ocure algo?