7812 baud ... ECU / ALDL ??

Yes, the USART will continue sending data at the same time the main program is running. But you have to feed it bytes every now and then.

The TX_INT (USART Transmit Interrupt) makes it fairly easy.
When the transmit buffer is empty it generates a TX_INT, which jumps to a handler that sends the next byte.

That handler just needs to send one byte at a time, by keeping track of where it is in an array and incrementing/wrapping as needed. It only takes a few instructions for each byte, so the main program is hardly affected by it.

You can then very easily have it sending continuous RS232 data via the USART, while the main program continues what it's doing at the same time.

Typically, when you have data to send, you ENABLE TX_INT's, and when it's finished sending the available data, DISABLE TX_INT. And that handler won't be called again until there's more data.

I ran into some surprises when trying to use the HPWM while using the A/D in a WHILE:WEND. So went with PWM sprinkled through out the program along with a nice filter to hold my Vout.
The HPWM command doesn't like being updated continuously.
It resets the PWM cycles every time it executes.

If you limit the HPWM updates to only when the Duty value changes, it gives a better response.
You can also synchronise the updates with Timer2 to make it "glitch-free".

hth,