Skip to content

Commit 1be6d34

Browse files
authored
Update TTimerList.cpp
1 parent 85b5625 commit 1be6d34

1 file changed

Lines changed: 13 additions & 17 deletions

File tree

TTimerList.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,7 @@ void TTimerList::Init()
6969
TTimerList::TTimerList()
7070
{
7171
count = 0;
72-
for (byte i = 0; i < MAXTIMERSCOUNT; i++) // первоначальная инициализация, заполнение списка нулями
73-
{
74-
Items[i].CallingFunc = NULL;
75-
Items[i].InitCounter = 0;
76-
Items[i].WorkingCounter = 0;
77-
Items[i].Active = false;
78-
}
72+
memset(Items,0,sizeof(Items[0])*MAXTIMERSCOUNT);
7973
active = false;
8074
}
8175

@@ -146,20 +140,22 @@ void TTimerList::Delete(THandle hnd) // удалить тайм
146140

147141
void TTimerList::Step(void)
148142
{
149-
if (NOT active) return; // если все таймеры остановлены, то и смысла нет
143+
if (NOT active) return; // если все таймеры остановлены, то и смысла нет
144+
145+
byte sreg = SREG; // запомним состояние прерываний
146+
cli(); // чтоб никто не помешал изменить интервалы, запрещаем прерывания
147+
150148
// сопсно рабочий цикл
151149
for (THandle i = 0; i < MAXTIMERSCOUNT; i++) // пробегаем по всему списку таймеров
152150
{
153-
byte sreg = SREG; // запомним состояние прерываний
154-
cli(); // чтоб никто не помешал изменить интервалы, запрещаем прерывания
155-
if (Items[i].CallingFunc == NULL) continue; // если функция-обрабоччик не назначена, уходим на следующий цикл
156-
if (NOT Items[i].Active) continue; // если таймер остановлен - тоже
157-
if (--Items[i].WorkingCounter > 0) continue; // уменьшаем на 1 рабочий счетчик
151+
if (Items[i].CallingFunc == NULL) continue; // если функция-обрабоччик не назначена, уходим на следующий цикл
152+
if (NOT Items[i].Active) continue; // если таймер остановлен - тоже
153+
if (--Items[i].WorkingCounter > 0) continue; // уменьшаем на 1 рабочий счетчик
154+
155+
Items[i].CallingFunc(); // если достиг 0, вызываем функцию-обработчик
158156
Items[i].WorkingCounter = Items[i].InitCounter; // и записываем в рабочий счетчик начальное значение для счета сначала
159-
sei();
160-
Items[i].CallingFunc(); // если достиг 0, вызываем функцию-обработчик
161-
SREG = sreg; // теперь и прерывания можно восстановить как было
162-
}
157+
} // прерывания ЗАПРЕЩЕНЫ
158+
SREG = sreg; // теперь и прерывания можно восстановить как было
163159
}
164160

165161
void TTimerList::AllStart()

0 commit comments

Comments
 (0)