Olvidé subir el fichero y al editar no me deja, a ver ahora.
Edito para decir que soy inútil y no sé adjuntar cosas en el foro...pongo el código:
●Programa de ejemplo
Se produce una interrupción cada vez que se recibe un carácter a traves de la usart en modo síncrono maestro (8bits).El caracter recibido se retransmite hacia el terminal a modo de eco. Fosc=4MHZ. Comunicación=9600 baudios.
LIST P=16F873
INCLUDE “P16F873.INC”
ORG 0
GO TO INICIO
ORG 4
GOTO INTER
ORG 5
INICIO: BSF STATUS, RP0
MOVLW B’10111111’
MOVWF TRIS C
MOVLW B’10110000’
MOVWF TXSTA // csrc(maestro), txen(transmission on),sync(síncrono) a 1 MOVLW .103
MOVWF SPBRG //Comunicación a 9600 baudiosBRG=Fosc/(4*(X+1))X=103
BSF PIE1, RCIE
BCF STATUS, RP0
MOVLW B’1001000’
MOVWF RCSTA //Recepción continua y activamos el módulo SCI(spen=1)
MOVLW B’11000000’
MOVWF INTCON //Habilitamos la interrupción
BUCLE: CLRWDT
GOTO BUCLE //El programa se queda en el bucle hasta que se da 1 interrupción
INTER: BCF PIR1, RCIF
MOVF RCREG, W
BCF PIR1, TXIF
MOVWF TXREG//Cargamos el dato recibido en RCREG en TXREG para volver a transmitirlo
BSF STATUS,RP0
TX-WAIT: BTFSS TXSTA, TRMT//Miramos si ha finalizado la transmisión
GOTO TX_WAIT
BCF STATUS,RP0
RETFIE
END