Вот немного набросал. Думаю, все будет понятно. Я Просто исхожу из того, что максимальное значение АЦП будет 1023. Поскольку тебе требуется всего 30 шагов, то делим максимальное значение АЦП на 30, получаем 34. 
 Получаем такой код:  
Code
 
 DEVICE = 16F876A 
 '-------------------------------------Предустановки-------------------------------------------- 
 XTAL 4 
 DECLARE LCD_TYPE  ALPHA       'Тип ЖКИ 
 DECLARE LCD_DTPIN PORTB.4     'Подключение шины данных 
 DECLARE LCD_RSPIN PORTB.2     'RS -> PORTB.2 
 DECLARE LCD_ENPIN PORTB.3     'E -> PORTB.3 
 DECLARE LCD_INTERFACE 4       'Интерфейс передачи - 4-проводный    
 DECLARE LCD_COMMANDUS 2000    'Задержка перед посылкой команды    
 DECLARE LCD_DATAUS 50        'Задержка перед посылкой данных    
 DECLARE LCD_LINES 2           'Число строк ЖКИ 
 DECLARE ADIN_RES 10           '10-битный АЦП 
 DECLARE ADIN_TAD FRC       'Выбор тактирования    
 DECLARE ADIN_STIME 100         '50 мкС на выборку 
 '-------------------------------------Настройки портов----------------------------------------- 
 TRISA = %00101111                
 TRISB = %00000011 
 TRISC = %00000000    
 PORTB = %00000000 
 PORTC = %00000000    
 ADCON1 = %10000000            'Установить выводы порта А входами АЦП 
 PORTB_PULLUPS = off          'Выключить подтяжку резисторов к порту PORTB    
 '-----------------------------------Конфигурация переменных------------------------------------ 
 ;   Symbol VentR PORTA.0    'Управление затвором полевого транзистора 
 ;   Symbol VentP PORTA.1     'Звуковая сигнализация при работе 
 ;   Symbol RegR PORTA.2        'Управление включением реле для замера сопротивления измеряемого позистора 
 ;   Symbol RegP PORTA.3 
 '   SYMBOL Pusk PORTB.0        'Кнопка ПУСК для старта начала измерения и обработки 
 ;   Symbol Rezhim PORTB.1      'Переключение питающий напряжений 130-425В для изменения коэфф. деления АЦП 
 ;   Symbol Alarm PORTC.0 
 '   DIM VentRA AS FLOAT         'Переменная для хранения результата АЦП вольт    
 ;   Dim VentPA As Float         'Переменная для хранения результата АЦП вольт    
 ;   Dim RegRA As Float             'Переменная для хранения результата АЦП вольт 
 ;   Dim RegPA As Float        'Переменная для хранения результата АЦП вольт    
       DIM i AS BYTE 
 DIM ADCRes[4] AS WORD    ' Переменная для результата преобразования 
 DIM RABOTA1 AS BYTE 
 DIM PAUSA1 AS BYTE 
 DIM RABOTA2 AS BYTE 
 DIM PAUSA2 AS BYTE 
 '-------------------------------------Очистка дисплея------------------------------------------ 
 CLS 
 '---------------------------Подать звуковой сигнал о готовности к работе----------------------- 
 PRINT AT 1, 1, "STEND SIRP V1.0" 
 DELAYMS 1000 
 CLS 
 '--------------------Измерение и вывод на дисплей значения напряжения питания------------------ 
 Start: 
 GOSUB ReadADCs 
        RABOTA1=ADCRes[0] 
        PAUSA1=ADCRes[1] 
        RABOTA2=ADCRes[2] 
        PAUSA2=ADCRes[3] 
 PRINT AT 1, 1, DEC2 RABOTA1," ", DEC2 PAUSA1 'Здесь просто отображаем результат в минутах по каждому порту 
 PRINT AT 2, 1, DEC2 RABOTA2," ", DEC2 PAUSA2 
 GOTO Start 
 ;;'-----------------------------Проверка сопротивления позистора--------------------------------- 
 '------------------------------------------------------------------------------------------- --- 
 ReadADCs: 
        FOR i = 0 TO 3    
          ADCRes[i] = ADIN i 'Теперь в данном элементе массива ADCRes[i] содержится значение одного из каналов АЦП 
              ADCRes[i] = ADCRes[i]/34 'А теперь мы преобразуем это значение в минуты 
        NEXT 
 RETURN 
 
 То, что я написал выше, вообще не требуется/ 
 Теперь имеем значения резисторов в минутах. Теперь попробуй вести отсчет с помощью таймера(чтобы отсчет шел в фоне основной программы) в прерываниях. Настрой TIMER1 на прерывания через каждые 0.5 сек и ставь выходы как тебе надо. 
 Вот как-то так...