Unfortunately still nothing.

I would like to remove the ADV all together and just have the FOR...NEXT loop to generate the number of 0 - 255. And then the LEDs changing there PWM to emulate the colours of the spectrum. Here is what the code looks like at the moment with all the recommended changes.

TRISA = %11111111
TRISC = %00000000


rbgArray var byte[3] ' holds the rgb values in this case the led is rbg


x var byte
y var byte
adcVar var byte
rbg var byte ' which value we are changing in the rbg array
rainbowVal var byte ' the current value to produce rainbow
Delta var byte ' find the size of each section in the 6stage rainbow
Section var byte ' which section it is in

maxValue con 255 'the maximum input value for generating rainbow

delta = maxValue/6

y = 0

for x = 0 to 2
high x
pause 1000
low x
next

main:
for rainbowval = 0 to 255
gosub rbgrainbow
next
for rainbowval=255 to 0 step - 1
gosub rbgrainbow
next
goto main


rbgrainbow:
for rbg = 0 to 2
section = ((rainbowval + ((rbg * 2)*delta))/ delta) // 6 ' this gives what section it is in
'serout2 portc.6, 16468, ["rbg: ", dec rbg, 13,10,"section: ", dec section, 13, 10]

select case section
case 0
rbgarray[rbg] = (rainbowval // delta)*6 'this is how far it has gone in its section
case 1
rbgarray[rbg] = 255
case 2
rbgarray[rbg] = 255
case 3
rbgarray[rbg] = 255 - ((rainbowval //delta)*6)
case 4
rbgarray[rbg] = 0
case 5
rbgarray[rbg] = 0
case 6 'this one is for pics bad math
rbgarray[rbg] = 0
end select
next

gosub ledpwm

return

ledPWM:
For y = 0 to 2
Select Case y
Case 0
pwm PORTC.0, rbgarray[y], 1
case 1
pwm PORTC.1, rbgarray[y], 1
case 2
pwm PORTC.2, rbgarray[y], 1
end select
next