Ok, so using the calc I get PR2 = 9, duty register = 20 and with a 1:1 prescaler.

Is this about right?:

Code:
OSCCON = $70
define osc 8

CSET   VAR WORD 'CURRENT SET
CSEN   VAR WORD 'CURRENT SENCE  
DUTY   VAR wORD 'HPWM DUTY CYCLE

ADCON0 = %00011001
ADCON1 = %00001111
ADCON2 = %10111111
TRISA = %00000000
TRISB = %00110011
Define  ADC_BITS        10     	' Set number of bits in result
Define  ADC_CLOCK       3     	' Set clock source (3=rc)
Define  ADC_SAMPLEUS    10    	' Set sampling time in uS


'DUTY = 30 'SET INITIAL OUTPUT CURRENT HIGH TO ENABLE FAST STARTUP 
CSET = 0
CSEN = 0

duty = 20                           ' duty value for 50% duty cycle
PR2 = 9                             '
T2CON = %00000100                   ' timer2 on, prescale 1:1
CCPR1L = duty>>2                    ' MSB of duty cycle value
CCP1CON=%00001100 | (dUTY<<5)       ' set PWM mode and store the 
                                    '   2 LSB of duty




LOOP:
ADCIN 6, CSET 'READ VALUE OF CURRENT SET POT
ADCIN 4, CSEN   'READ VALUE OF CURRENT SENCE
IF CSEN > CSET THEN LET DUTY = DUTY - 1
IF CSEN < CSET THEN LET DUTY = DUTY + 1
CCPR1L = duty>>2                    ' MSB of duty cycle value
CCP1CON=%00001100 | (dUTY<<5)       ' set PWM mode and store the 
                                    '   2 LSB of duty

'HPWM 1,DUTY,32767 'OUTPUTS THE DUTYCYCLE AT 32.767KhZ
GOTO LOOP