Ok, so this combines the working crude regulator code with Henriks example code. I havent programmed the pic yet but it does compile.

Code:
Define OSC 20
DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
DEFINE CCP1_REG PORTB
DEFINE CCP1_BIT 3


PORTA = %00000000       ' Turn off all PORTA 
PORTB = %00000000       ' Turn off all PORTB
ADCON0 = %00000001
ADCON1 = %01111000
ADCON2 = %10000111

TRISA = %11100111
TRISB = %11000011


UpButton VAR PortB.0   			' Active high button
DnButton VAR PortB.1   			' Active high button

Setting VAR BYTE
SettingChanged VAR BIT
DutyCycle VAR BYTE
SETPOINT var byte  'Output current level in 0.1A increments)100 = 1A)

CURRENT VAR WORD
LEDCURRENT VAR WORD
LEDCURRENT1 VAR WORD
high_duty var word
low_duty var word



Main:

  If UpButton THEN
    Setting = Setting + 1              ' Increment setting
    If Setting = 6 THEN Setting = 5    ' Make sure it doesn't go beyond 5
    SettingChanged = 1                 ' Set flag indicating new setting
  EndIf


  If DnButton THEN
    Setting = Setting - 1
    If Setting = 255 THEN Setting = 0  ' Make sure it doesn't go below 0
    SettingChanged = 1                 ' Set flag indicating new setting
  EndIf

  If SettingChanged THEN
    LOOKUP Setting, [12,23,34,45,56], DutyCycle
    SettingChanged = 0                 ' Clear flag
  EndIf

  If Setting = 0 THEN 
  SETPOINT = 0
  endif
  
  If SETTING = 1 then
  Setpoint = 2
  endif
  
  If Setting = 2 then
  SETPOINT = 5
  endif
  
  IF setting = 3 then
  SETPOINT = 9
  endif
  
  IF Setting = 4 then
  SETPOINT = 14
  endif
  
  If Setting = 5 then
  Setpoint = 17
  endif
  
ADCIN 0, CURRENT
LEDCURRENT = CURRENT * 49 /100 *2
LEDCURRENT1 = LEDCURRENT/10

CCP1CON = %00111100
PR2 = 99
high_duty=(dutycycle>>2)        'high 6 bits in CCPR1L
      low_duty=(dutycycle<<6)         'low two bits for CCP1CON
      'low_duty=(low_duty>>2)           'shift back to CCP1CON<5:4>
      low_duty.4=0                     'PWM configuration bit
      low_duty.5=1                     'PWM configuration bit
CCPR1L=high_duty
CCP1CON = $0C
T2CON = 4

IF LEDCURRENT1 < setpoint then
    dutycycle=dutycycle+1
    if dutycycle => 300 then
    dutycycle = 300
ENDIF
ENDIF
IF LEDCURRENT1 > setpoint then
    dutycycle=dutycycle-1
    IF dutycycle > 301 then
    dutycycle = 0
    
ENDIF
ENDIF

Goto Main