pic16f877 sine
The '877 has only two PWM channels, and trying to get reasonable PWM resolution in software is not trivial.
I have a similar project insofar as the variable frequency sine wave. I used a scaler added to a 24 bit sum, the most significant byte of which was used to fetch a value fro a lookup table. That value is then fed to an output port which has an external DAC. The software then loops.
In your case, since you want to maintain alignment between three output phases, only one sum is necessary. When using the top byte, you should limit it to the range of 0-239 to make the arithmetic simpler- unless you can stand 0.7 degree error.