Dan,

Bad news on the hardware PWM. The 16F628 only has one port with this feature. There are other chips that have more, but off the top of my head I do believe the maximum is 4 PWM ports.

PWM is definately a good way to go, in fact since I now know you'll be controlling LEDs, you don't need to convert this to analog (controlling the duty cycle should be sufficient). The 16F628 has 16 I/O ports available, but like I said only one of them supports the HPWM function. Perhaps you can do it as a software PWM, but not via PBP's PWM command. Instead do it with a bit of embedded ASM code. Check out this link: http://www.dattalo.com/technical/software/pic/pwm8.asm

It describes a method of producing 8 PWM outputs. If you used this with a PIC chip that has a built-in USART, you should be able to do what you have in mind, and not use too many pic chips (perhaps extend it to 10 PWM outputs).

Better still, would be if the software PWM was done as an interrupt service routine. This would allow you to write everything else in PBP, but still have stable PWM pulses. If I come across a good way to do this I'll post it here.