Also, was du machst ist praktisch RS232 in Software implementieren.
Wenn du Hardware-UART verwendest, ist es aber deutlich einfacher und du brauchst dich nicht um den Timer zu kümmern.

Du brauchst nur eine Initialisierung für den UART:
Code:
; USART initialisieren
    BSF      STATUS,RP0        ; Bank 1
    MOVLW    0x20              ;
    MOVWF    TXSTA             ;
    MOVLW    D'10'             ; = 57 kbps bei 10 MHz 
    MOVWF    SPBRG
    BSF      TXSTA, BRGH       ; 
    BCF      STATUS,RP0        ; Bank 0
    MOVLW    0x90              ; Empfänger: RS232
    MOVWF    RCSTA             ; 
return
und dann ne Routine zum Ausgeben:
Code:
RS232out
    btfss   PIR1,TXIF  ; kann ich senden?
    goto    RS232out         
    movwf   TXREG               
    return
[/code]

bzw. zum Empfangen:
Code:
RS232in
    btfss PIR1,RCIF
    goto RS232in
    movwf   RCREG
    return
Allerdings bin ich mir bei dem Empfangsabschnitt nicht mehr ganz so sicher, ob ich den noch richtig im Kopf hab (schaff inzwischen hauptsächlich mit C). Am besten einfach mal im Datenblatt nachschaun. Da findest du alles unter dem Begriff USART.