Впрочем по идеи можно и ещё проще:
Код:Config Timer1 = Timer , Prescale = 1024 , Compare A = Toggle , Clear Timer = 1
Dim Mem_time as Word
Enable InterruptsEnable Timer1
start adc
Do
set_time = Getadc(0)
If Mem_time<>set_time Then
Mem_time=set_time
Compare1a = set_time
print Timer1; " ";set_time
End If
Loop
EndВ общем, на время изменения параметра сравнения, надо останавливать таймер, иначе он сравнивать будем скажем с числом 15, а таймер уже пролетел это число и получается пропуск (полный цикл). Конечно первый вариант кода более синхронный, т.к. загрузка изменения происходит на новом цикле.
Вот ввывод терминала, иногда таймер затыкается, но потом возвращается
86 557 216 554 362 556 508 557 97 556 1 557 86 556 216 557 364 554 508 557 96 556 3 555 87 556 217 555 363 557 510 556 2 557 86 556 216 555 362 556 509 555 99 556 3 555 88 556 220 557 364 555 510 557 99 556 2 555 86 556 216 557 362 555 509 556 527 557 86 555 216 557 362 555 508 559 95 56