If you get this going I’ll do the rest from there.
The code to flash one led on/off per second is only needed
to prove the include file is being included from the right directory and everything works.

At the speeds you’re talking about you can have up to eight software PWM channels
who’s rising and falling edges are synchronised to the clock cycle fairly easily.
especially easy if the frequency of the outputs are the same.

Code:
DEFINE OSC xx
‘ tell PBP the clock frequency you’re using
DEFINE NOCLRWDT
‘ this only means the program has it’s own clrwdt instruction
‘ you can still set the watchdog timer on at programming time

include “Elapsed.bas”
‘ DT’s Elapsed Timer code from PBP forum
‘ drop the Elapsed.bas file in the PBP folder

‘don’t bother declaring SecondsChanged variable,
‘it should already be accessible because it’s declared in the include file

‘CMCON = 7
‘uncomment to set analogue ports digital if the device has analogue ports
‘and the led is connected to one of them

trisb.1 = 0
‘ set led output whichever pin you have the led connected
ledstate var bit

gosub ResetTime		'reset time 00:00:00
gosub StartTimer	'start timer
'
cycle:
@ clrwdt
‘
if SecondsChanged = 1 then
SecondsChanged = 0
ledstate = ledstate + 1
portb.1 = ledstate
‘ use your led pin of course
endif
‘
goto cycle
‘