Du gibst also in der IRQ Routine, die den UART-TX (... if(PIR1bits.TXIF)
...) bedienen soll, jedesmal wieder neuen Text über die UART aus (...
putUsart(text) ...)?
Ausserdem ist deine IRQ Routine grundlegend verkehrt. Du machst da
Sachen drin, für die das abgefragte IRQ-Flag garnicht zuständig ist
(INT0IF, INTEDG0, ...) Dann hast Du den Sinn des TXIF nicht wirklich
verstanden. Der wird immer dann gesetzt wenn der TX Buffer (TXREG)
µC-Intern übertragen wurde und ausgegeben wird. Immer. D.h. du musst,
wenn Du das Senden schon per IRQ machen willst, auch prüfen ob überhaupt
neue/weitere Bytes zum Senden da sind. Wenn nicht dann musst Du den
TX-IRQ abschalten.
Grüße,
Chris