program knight_rider;
var i:byte;
    adc_temp:word;

function led(a:byte):word;
begin
  case a of
    1:result:=$01;
    2:result:=$02;
    3:result:=$04;
    4:result:=$08;
    5:result:=$10;
    6:result:=$20;
    7:result:=$40;
    8:result:=$80;
  end;
end;

begin
  ADCON1 := $80;
  TRISA := $FF;
  TRISB := 0;
  PORTB := 0;
  TRISC := 1;
  repeat
  while portc=$03 do
    begin
      for i:=1 to 8 do
        begin
          adc_temp:=ADC_read(2);
          portb:=led(i);
          delay_ms(adc_temp);
        end;
      for i:=8 downto 1 do
        begin
          adc_temp:=ADC_read(2);
          portb:=led(i);
          delay_ms(adc_temp);
        end;
    end;
  until false;
end.