Heres my code so far. It appears to work as needed, but thus far I have only tested it with a sim. I will try and put the hardware together tonight and test it in real time.
Code:
' Name        : RMTEO Contest 2.pbp
' Compiler    : PICBASIC PRO Compiler 2.6A
' Assembler   : MPASM
' Target PIC  : 16F1947
' Hardware    : RMTEO Contest
' Oscillator  : internal
' Keywords    :
' Description : PICBASIC PRO program to drive 4 LED's at independent speeds
' adjustable from 4 pot's. fade from 0-100-0% for each cycle
'
'
'
'
' Configure ports
'
'
ANSELA = %00001111  'port A 0-3 analog 4-7 digital
ANSELE = %00000000  'port E all digital
ANSELF = %00000000  'port F all digital
ANSELG = %00000000  'port G all digital
CM1CON0 = %00000000  'No comparaters
CM1CON1 = %00000000
CM2CON0 = %00000000
CM2CON1 = %00000000
 
' preload latches before setting direction
 
LATB = %00000000
LATC = %00000000
LATD = %00000000 'LED's 0 for red, 1 FOR GREEN should start red
LATF = %00000000 ' low nibble is drive enable. 1 disables
LATG = %00000000
 
' I/O direction
 
TRISA = %00001111'x,x,x,x,p3,p2,p1,p0
TRISB = %00000000'x,x,x,x,led3,led2,led1,led0
TRISC = %00000000'UNUSED
TRISD = %00000000'UNUSED
TRISE = %00000000'UNUSED
TRISF = %00000000'UNUSED
TRISG = %00000000'UNUSED
 
 
'REMOVE THIS LINE IF NOT SETTING THE CONFIGS IN CODE SPACE
 
@ __config _CONFIG1,_FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_OFF & _FCMEN_OFF
@ __config _CONFIG2,_WRT_OFF & _VCAPEN_OFF & _PLLEN_ON & _STVREN_OFF & _LVP_OFF ;_BORV_25
 
'------------------Internal osc setup
OSCCON = %11110000 'clock is 8 meg. turn on PLL for 32 meg clock
DEFINE OSC 32
DEFINE NO_CLRWDT 1
 
'Variables
 
'Port assignments     
 
'------------------port B
 
'---------------------words
freqs1  var word
freqs2  var word
freqs3  var word
freqs4  var word
freq1   var word
freq2   var word
freq3   var word
freq4   var word
 
'---------------------Bytes
TICKS   VAR BYTE
display VAR BYTE
duty1   VAR BYTE
duty2   VAR BYTE
duty3   VAR BYTE
duty4   VAR BYTE
myflags var byte
 
'---------------------Bits
 led1   var display.0
 led2   var display.1
 led3   var display.2
 led4   var display.3
 
 df1    var myflags.0
 df2    var myflags.1
 df3    var myflags.2
 df4    var myflags.3
'---------------------INIT VARIABLE VALUE
 
GOTO START
MYINIT:
BSR = 0
TICKS = 0
freqs1 = 128
freqs2 = 256
freqs3 = 512
freqs4 = 1023
duty1 = 0
duty2 = 0
duty3 = 0
duty4 = 0
display = 0
MYFLAGS = 0
 
'-------------------A/D setup
adcon0 = %00000001
adcon1 = %11100000
define ADC_BITS 10
 
'-------------------10uS interrupt setup
DEFINE INTHAND _TimeBase
PIR1.1 = 0
PIE1.1 = 1        ; Enable Timer2 interrupts
INTCON.6 = 1      ; enable PEIE
INTCON.7 = 1      ; enable GIE
T2CON = %00000100 ; Setup Timer2 AND SET PRESCALE TO 1:1. @32Mhz THE Interrupt
PR2 = 39'                 FOR TMR2 WILL BE 10uSec
RETURN
 
'---------------------start of program
START:
   GOSUB MYINIT
MAIN:
 
 adcin 0,freqs1   
'-------------------------led1 math
    if ticks>duty1 then
        led1 = 0
    else
        led1 = 1
    endif
    if freq1 > freqs1 then
        if df1 then 
            duty1=duty1+1
        else
            duty1=duty1-1
        endif
        if duty1=100 then df1=0
        if duty1=0 then df1 = 1
        freq1 = 1
    endif
 
 adcin 1,freqs2   
'------------------------led2 math
    if ticks>duty2 then
        led2 = 0
    else
        led2 = 1
    endif
    if freq2 > freqs2 then
        if df2 then 
            duty2=duty2+1
        else
            duty2=duty2-1
        endif
        if duty2=100 then df2=0
        if duty2=0 then df2 = 1
        freq2 = 1
    endif
 
adcin 2,freqs3
'------------------------led3 math
if ticks>duty3 then
        led3 = 0
    else
        led3 = 1
    endif
    if freq3 > freqs3 then
        if df3 then 
            duty3=duty3+1
        else
            duty3=duty3-1
        endif
        if duty3=100 then df3=0
        if duty3=0 then df3 = 1
        freq3 = 1
    endif
 
 adcin 3,freqs4   
'---------------------------led4 math
if ticks>duty4 then
        led4 = 0
    else
        led4 = 1
    endif
    if freq4 > freqs4 then
        if df4 then 
            duty4=duty4+1
        else
            duty4=duty4-1
        endif
        if duty4=100 then df4=0
        if duty4=0 then df4 = 1
        freq4 = 1
    endif
    GOTO MAIN
 
'-----------------------ISR
TimeBase:
    BSR = 0
    portb = display ' update led's
 
    freq1 = freq1 +1
    freq2 = freq2 +1
    freq3 = freq3 +1
    freq4 = freq4 +1
    if ticks >99 then
     ticks = 0
    else
     ticks = ticks+1
    endif
 
    pir1.1 = 0          ' clear interrupt
@ RETFIE
All comments welcome. I did this all software (no hardware PWM) as I thought it would be more fun.

Thanks for the contest RMTEO! Sorry I seem to be the only one entering.