Подпрограмма формирования задержки
Для формирования паузы (задержки) в программах для микроконтроллера полезно применять программы, которые не нагружая ми АЛУ микроконтроллера ни память с высокой точностью справляются с этой задачей.
Как уже думаю стало понятно, микроконтроллер в момент паузы работает, то есть выполняет определенную программу, которая заменяет выполнение основной программы требующей той самой задержки.
Ниже показан пример программы формирования задержки. Основа программы это выполнение паузы размером в один машинный такт микроконтроллера - "nop".
#define nop() {asm("nop");} unsigned int x,i; //перечисление переменных // function delay void delay(int t) { for (x=t; x>0 ;x--) nop (); }
Максимальная пауза генерируемая данной программой ограничена максимальным значением переменной "i".
Если необходимо сформировать довольно длительную задержку советую прибегнуть к небольшой хитрости, использовать данную программу в качестве подпрограммы для программы длительной задержки, объясняю:
описываем данную программу задержки как обычно
#define nop() {asm("nop");} unsigned int x,i; //перечисление переменных // function delay void delay(int t) { for (x=t; x>0 ;x--) nop (); }
После чего ниже пишем следующую программу:
// function long delay void long_delay(int p) { for (j=0; j<p; j++) { delay(300); } }
Получается следующее, что в программе длительной задержки мы используем программу формирования обычной задержки несколько раз, тем самым увеличиваем время задержки в разы!
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии


Недавние комментарии
2 дней 16 часов назад
2 дней 1 час назад
3 дней 4 часов назад
3 дней 4 часов назад
3 дней 7 часов назад
3 дней 9 часов назад
3 дней 10 часов назад
5 дней 5 часов назад
1 неделя 1 day назад
1 неделя 2 дней назад