Nie przepadam za timerami i coraz częściej używam takiej konstrukcji:
w momencie startu (jednorazowo) wywołuję coś takiego:
t_start := TIME();
następnie w trakcie działania programu, gdzie analizuję czasy robię to tak:
czas_dzialania := TIME_TO_DWORD(TIME() - t_start )/1000; <- tutaj wyrażone w sekundach (dzielenie przez 1000) zmienna czas_dzialania to zmienna liczbowa (np. INT, DWORD w zależności od wymaganego zakresu).
a później warunki w rodzaju IF (czas_dzialania>10) THEN ...
Zwróć uwagę, że nie możesz robić warunków w rodzaju IF (czas_dzialania = 10) THEN bo o ile przy sekundach nie powinno być problemu, to przy operacjach na milisekundach możesz nie trafić w konkretną wartość i warunek nigdy nie będzie spełniony.
Typowy cykl wykonania mojego programu to ok. 29-31ms. Na takich "timerach" można robić naprawdę fajne rzeczy.