Hallo scales,
bei meinen Assembler-Programmen habe ich immer einen Timer-Interrupt mit 1 ms bzw. bei einem Programm für 8 PWM-Ausgänge mit 0,1 ms (siehe http://www.domnick-elektronik.de/picpwm.htm ). Allerdings nutze ich die USART des PIC (RxD per Recive-Int und TxD per 1 ms Timer-Int).
Für Deine Zwecke könntest Du einen Timer-Interrupt initialisieren, der genau die Zeit hat, wie ein Bit für Deine serielle Übertragung benötigt. Dann ist sicher gestellt, daß kein Bit verloren geht oder vergessen wird.
Für die Erkennung des Start-Bit gibt es beim PIC den PortB Change Int, mit dem ein ankommendes Bit per Interrupt erkannt werden kann; es ist allerdings zu klären, welches Bit / welcher Kanal schon erkannt wurde.
Vielleicht reicht die Timer-Zeit auch als 100-stel (0...100%) für die PWM ?
Im Hauptprogramm kannst Du dann zeitunkritische Dinge abwickeln.