Цитата(evg123 @ Jan 25 2007, 12:00)

Единственный рабочий способ это (как предложил gala) с использованием таймера.
Запускаем таймер в 16 битном режиме с перезагрузкой с частотой 1кГц.
В прерывании пишем код
TIMER++; //глобальная переменная (unsigned int), пользовательский таймер
Подпрограммо задержки будет иметь вид
void Delay(unsigned int T) // 1T = 1мс
{
unsigned int TF;
TF=TIMER;
while((TIMER-TF)<T);//сама задержка
}
Применение
Delay(100); // задержка на 100 мс
Все

Когда за время очередного выполнения продпрограммы DELAY произойдет переполнение переменной TIMER (а это будет случаться примерно раз в минуту), очередная задержка будет выполняться неожиданно долго? Или я чего-то не понял?
Ой, наверное, наоборот - задержка закончится неожиданно досрочно...
----------------------------------
Более позднее исправление:
Перепроверил - все работает нормально. Извиняюсь за невольную провокацию.