ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
23281 Топик полностью
ShiphT (10.03.2005 14:46, просмотров: 1) ответил nm5 на Я НЕМНОГО ЗАПУТАЛСЯ С РАБОТОЙ ТАЙМЕРА
На самом деле это делается немного по другому. Например так имеется некоторая переменная volatile unsigned char cTimeCount1; Пусть таймер у нас дает прерывание каждые 10 мс. Тогда в основном цикле программы, когда надо включить выход 1, пишем так: cTimeCount1 = 200; //200 раз по 10 мс - 2 секунды В обработчике таймера, вызываемого каждые 10мс написано следующее:
if(cTimeCount1 != 0){
   P17 = 0;            //вкл. выход1
   cTimeCount1--;
   if(cTimeCount1 == 0)
      P15 = 0;         //вкл. выход2
}
Таким образом, при записи в ячейку cTimerCount1 значения, отличного от нуля, обработчик прерывания, в первое-же прерывание включит выход 1. Далее на каждый свой вызов (каждые 10мс) будет уменьшать значение счетчика, и, дойдя до нуля включит выход 2. Причем отмеряться все эти промежутки и происходить действия будут в "фоновом" от основной программы режиме, Словно другая, параллельная основной программе, задача.