Цитата(Freeze Anti @ Nov 9 2007, 11:55)

Так проблема в том, что мне необходимо измерить эти 15сек. Остальная часть программы при этом должна работать.
Настраиваете таймер на определенный интервал времени, соответствующий минимально необходимому. В процедуре прерывания от таймера увеличиваете переменную, выделенную под счетчик временных интервалов на величину интервала вызова прерывания. В основной программе во временную переменную запоминаете текущее значение переменной временных интервалов и затем сравниваете разницу между текущим и запомненным значениями. Если эта разница превысила заданный интервал, то это означает, что время ожидания закончилось.
Для счета времени обычно подходят миллисекундные интервалы (от 1 до 100мс). Соответственно на такой интервал нужно настраивать таймер и прерывания от него. На это же значение нужно увеличивать переменную счетчика временных интервалов, тогда ее значение у вас будет всегда выражено в миллисекундах, а не в каких-то абстрактно-попугайских "тиках" таймера. При этом 16-разрядной беззнаковой переменной хватает для организации счетчика интервалов с временем переполнения больше 1 минуты. Для отсчета бОльших интервалов времени можно использовать 32-разрядную переменную. С помощью такого (32-битного) счетчика в миллисекундных отсчетах можно измерить интервал времени больше, чем 1,5 месяца.
Еще раз обращаю внимание, что в прерывании счетчик времени нужно увеличивать не на 1, а на число соответствующее периоду вызова прерываний, выраженное в миллисекундах (ну или секундах)! Не наступайте на уже пройденные чужие грабли хотя бы в этом месте