Transferincia de datos Asincrona

Quiero hacer tranferiancia de datos por el puerto serial, enviar un mensaje del pic a la pc, en forma asincrona ya tengo el programa pero a la hora de recibir los datos en la pc este me da puros caracteres extraños si alguien me pudiera ayudar se los agradecere, aqui dejo el programa

Include "p16f877a.inc"

apun EQU 0x20
dato EQU 0x21
org 0x0000

CLRF PORTC ;Borra los bits de la puerta C
trans BSF STATUS,RP0 ;Mover al banco 1
BCF STATUS,RP1
MOVLW 0x5F ;RC7/RX entrada, RC6/TX salida
MOVWF TRISC
BCF STATUS,SYNC ;Modo asincrono SYNC=0
BCF TXSTA,BRGH ;Activar velocidad baja(BRGH=0)
MOVLW 0x06 ;Valor para 9600 Bauds para Fosc=4Mhz
MOVWF SPBRG
BSF TXSTA,TXEN ;Se activa la transmision
BCF STATUS,RP0 ;Mover al banco 0
BSF RCSTA,SPEN ;Activar el USART
BSF RCSTA,CREN ;Habilita la recepcion
rep CLRF apun ;Inicia apuntador
cic2 CALL letrero ;Obtiene el siguiente caracter apuntado
MOVWF dato ;Lo guarda en dato
SUBLW "$" ;Compara con el signo
BTFSC STATUS,Z ;
GOTO rep ;Si es, reinicia
CALL envia ;Si no es "$" envia el dato
INCF apun,1 ;Apunta al siguiente caracter
GOTO cic2 ;Repite

;Subrutina para enviar un dato por el puesto serial

envia BSF STATUS,RP0 ;Mover al banco 1
esp BTFSS TXSTA,TRMT ;Checa si el buffer de transmisión
GOTO esp ;Si esta ocupado espera
BCF STATUS,RP0 ;Mover al banco 0
MOVF dato,W ;Rescata dato a enviar
MOVWF TXREG ;Envia el dato
RETURN
letrero:
MOVF apun,W ;Carga apuntador en W
ADDWF PCL,1 ;Salta W instrucciones adelante
DT "Pruba",0x0D,0x0A,"$"
end
 
Atrás
Arriba