Такие задержки нужно делать на таймере.
В общих чертах. Необходимо правильно загрузить таймер. Если число вами жестко определено и в процессе работы не меняется, то расчет лучше делать средствами самой среды разработки, которая может посчитать необходимое для таймера число, как в приведенном мной примере. Этим числом вы загружаете соответствующий регистр таймера, разрешаете счет, разрешаете прерывания. Таймер с определенной вами скоростью начинает отсчитывать определенное количество тактов, соответствующее нужному вам временному интервалу. Время вызова обработчика прерывания относительно начала счета (или загрузки таймера, если счет в этот момент был уже активирован) совпадет с необходимым вам временным интервалом с точностью до разрешающей способности таймера, которая будет зависеть от частоты тактирования (fClk / Pre).
Сообщение отредактировал x736C - Jun 25 2010, 22:39
|