Attachment:
TimerT2.7z [2.32 KiB]
Downloaded 1352 times
Во втором таймере добавлен макрос
Code:
procedure MACRO_Delay;
//Задержка в 50 тактов по идее 2 5000 000 /50 = 50000 = 1 сек
begin
HLr(38425);// величина задержки
// спешат = 38425
//отстают = 38450
LabelA(DelayT);
Ar_(DelayT){13};Ar_(DelayT);{13}{для коректировки 50 тактов}
HLm1;{5} ArH{5}; AoL{4};
GotoUnNot0(DelayT){10};
end;
вставлен в код сюда
Code:
{ТУТ БУДЕТ ЗАДЕРЖКА}
MACRO_Delay;
Результаты теста (есть в файле TimerT2.dpr)
САС-Емулятор 1.44 (по секундно)
38300 1-я проверка, на компе = 0:10:00 , программа = 00:10:02 - СПЕШАТ!
38350 1-я проверка, на компе = 0:10:00 , программа = 00:10:01 - СПЕШАТ!
38375 1-я проверка. на компе = 0:20:00 , программа = 00:20:01 - СПЕШАТ!
38390 1-я проверка. на компе = 1:20:00 , программа = 01:20:06 - СПЕШАТ!
38400 1-я проверка, на компе = 1:00:00 , программа = 00:59:56 - ОТСТАЮТ!
38400 2-я проверка, на компе = 0:20:00 , программа = 00:20:01 - СПЕШАТ ВСЕ ТАКИ!
38450 , 1-я, на компе = 1:20:00 , программа = 01:19:58 - ОТСТАЮТ!
38425 , 1-я, на компе = 1:25:00 , программа = 1:25:01 - СПЕШАТ!
Устанавливать величину задержки нужно где-то....
HLr(38425);// величина задержки
// спешат = 38425
//отстают = 38450
Во всяком случае так при проверке САС-Емулятором 1.44.
Неплохо бы было, если бы это кто-то проверил на реальном ПК-01 Львов!
В Архиве TimerT2.7z, есть компиляции с разным значением величины задержки
в соответствующих папках 38300, 38350, 38375, 38390, 38400, 38425, 38450
Может попытаюсь убрать из MACRO_Delay одну "Ar_(DelayT);{13}" и тогда длительность макроса снизится 50-13=37 тактов. Если убрать обе то тогда длительность тактов макроса будет 24 такта и величины 65535 не хватит для задержки до 1 секунды. При 24 тактовой задержке величина задержки должна быть около 104166, если я правильно подсчитал.
Поэтому убирать обе "Ar_(DelayT);{13}" из макроса MACRO_Delay в данном случае не резон.