Цитата
А как кто в своих реальных программах проверяет не переполнился ли счетчик.
Чаще употребляю обратный отсчёт. Тогда
Код
if (count) count--;
В таком случае можно сделать принятие решения об окончании отсчета для переменной бОльшего размера, чем разрядность камня, без запрещения прерываний - проверяем по-байтно сначала старший байт - если ноль, то следующий младше и т.д. Обычно у мну для этого намалёваны макросы COUNTDOWN16(X) и COUNTDOWN32(X).
Для расчёта задержек при "мягком риалтайме" использую разницу беззнаковых целых.
Код
clock_t clock(void);
clock_t clock_Elapsed(clock_t ts){
clock_t tc = clock();
return (tc - ts);
}
void pause(clock_t duration){
clock_t ts = clock();
while(clock_Elapsed(ts) < duration){;}
}