Malcolm

Your idea seems to fit the "Soft PWM" concept very well. Search here to find how to do it.

A little pseudo code might show you how

Code:
' In a timer interrupt

     DutyCycle = DutyCycle+1
     if DutyCycle < Value1 then
           Port1 = On
     else
           Port1 = Off
     endif
     if DutyCycle < Value2 then
           Port2 = On
     else
           Port2 = Off
     endif
     if DutyCycle < Value3 then
           Port3 = On
     else
           Port3 = Off
     endif
     if DutyCycle < Value4 then
           Port4 = On
     else
           Port4 = Off
     endif