I have studied your tutorial 7 on RS232. I have a little bit unclear about the timing of XMIT.
Code:
Ser_Loop RRF Xmit_Byte , f ;send one bit
BTFSS STATUS , C
BCF SER_PORT, SER_OUT
BTFSC STATUS , C
BSF SER_PORT, SER_OUT
CALL Bit_Delay
DECFSZ Bit_Cntr , f ;test if all done
GOTO Ser_Loop
BSF SER_PORT, SER_OUT
CALL Bit_Delay
RETURN
The actual routine is from a very old Parallax application note, written using their own assembler - I simply converted it to use MicroChip assembler, and have been using it for MANY years. I've never actually sat down and analysed it.
For using the same routine at 20MHz, I actually added a pulse output on an I/O pin, and used a scope to display the actual sampling point - then adjusted the delay timing so it fell in the middle of the bits.
The timing at 9600 baud isn't critical, you have a fair amount of time to play with.