Цитата(Vavan4ik @ Mar 24 2009, 12:23)

только вот нужно придумать чтобы ее обнулять безболезненно, чтобы не получилось переполнения (в случае если устройство будет включено более времени переполнения).
Вы видимо не поняли сути, раз опасаетесь переполнения и собираетесь принудительно обнулять переменную.

Я же не зря выделял слова про
беззнаковую разность. Допустим, что переменная "системных тиков" 8-ми разрядная и изменяется на 1 каждую секунду. С помощью такой переменной можно отмерить интервал времени 4 с четвертью минуты. Допустим нам нужно отмерить 10 секунд, а текущее значение переменной "тиков" timeTick равно 250. Запомним это значение во временной
статической переменной. С первого взгляда может показаться что возникнет ошибка, ведь 250+10=260 и превышает разрядность выбранной переменной (255 max). Но в этом нет ничего страшного! Мы ведь берем
беззнаковую разность. А при таком счислении условие типа
Код
if ((timeTick-time)>=10)
будет истинно тогда, когда значение переменной timeTick достигнет значения 4. Т.е. при беззнаковом вычитании 8-ми разрядных переменных 4-250=10. Проверяем действительно ли 10 секунд? Счетчик timeTick принимает последовательно такие значения
0 - 250 <<--- исходное значение, от которого начинаем отсчет/сравнение
1 - 251
2 - 252
3 - 253
4 - 254
5 - 255
6 - 0 <<--- вот это "естественное" переполнение, которого вы почему-то боитесь

7 - 1
8 - 2
9 - 3
10 - 4
Видим, что интервал между 250 и 4 действительно из 10 отсчетов состоит, а каждый отсчет у нас по условию это 1 секунда. 10*1 сек=10 секунд, хоть при этом произошло совсем не опасное переполнение счетчика.