Подпрограмма формирования задержки

  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM sessions WHERE timestamp >= 1772744097 AND uid = 0 in /var/www/fendercustomsh/data/www/avrlab.com/includes/session.inc on line 119.
  • user warning: Table './drupal/sessions' is marked as crashed and last (automatic?) repair failed query: SELECT DISTINCT u.uid, u.name, s.timestamp FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.timestamp >= 1772744097 AND s.uid > 0 ORDER BY s.timestamp DESC in /var/www/fendercustomsh/data/www/avrlab.com/modules/user/user.module on line 764.

Для формирования паузы (задержки) в программах для микроконтроллера полезно применять программы, которые не нагружая ми АЛУ микроконтроллера ни память с высокой точностью справляются с этой задачей.
Как уже думаю стало понятно, микроконтроллер в момент паузы работает, то есть выполняет определенную программу, которая заменяет выполнение основной программы требующей той самой задержки.

Ниже показан пример программы формирования задержки. Основа программы это выполнение паузы размером в один машинный такт микроконтроллера - "nop".

  1. #define nop() {asm("nop");}
  2. unsigned int x,i; //перечисление переменных
  3.  
  4. // function delay
  5. void delay(int t)
  6. {
  7. for (x=t; x>0 ;x--)
  8. nop ();
  9. }

Максимальная пауза генерируемая данной программой ограничена максимальным значением переменной "i".
Если необходимо сформировать довольно длительную задержку советую прибегнуть к небольшой хитрости, использовать данную программу в качестве подпрограммы для программы длительной задержки, объясняю:
описываем данную программу задержки как обычно

  1. #define nop() {asm("nop");}
  2. unsigned int x,i; //перечисление переменных
  3.  
  4. // function delay
  5. void delay(int t)
  6. {
  7. for (x=t; x>0 ;x--)
  8. nop ();
  9. }

После чего ниже пишем следующую программу:

  1. // function long delay
  2. void long_delay(int p)
  3. {
  4. for (j=0; j<p; j++)
  5. {
  6. delay(300);
  7. }
  8. }

Получается следующее, что в программе длительной задержки мы используем программу формирования обычной задержки несколько раз, тем самым увеличиваем время задержки в разы!

Скачать программу задержки