Зарегистрирован: Пт сен 16, 2016 18:24:56 Сообщений: 7
Рейтинг сообщения:0
Добрый вечер, по идее 1 принимается за одну мили секунду 1000 секунда у меня же чтоб получить задержку в 0.5 сек приходится прописывать 50000, может в настройках как то можно поправить?
Зарегистрирован: Пт сен 16, 2016 18:24:56 Сообщений: 7
Рейтинг сообщения:0
среда турбо паскаль win98 . Неужели могут такие расхождения могут быть. Просто самою большую задержку могу сделать все во лишь 0.5 сек. А если надо хоть 5 мин приходится много раз писать по 0.5. Вобще программная задержка годится для таймеров ?
Добавлено after 2 hours 6 minutes 30 seconds: попробовал программку часы, секунды идут правильно там привязка часам компьютера, может можно както привязать время к другим программам чтоб они на него опирались.
Можно крутить задержки, но потом на другую машину перенести проблемы... Можно сесть на прерывание и тогда неважно какой проц там стоит. Когда то выловил сырец, два прибора крутятся на основе этого кода. Для отладки подобного надо пост карту, и кидать туда коды, т.к. при ошибке виснет насмерть. Однако сейчас писать что то новое на паскале я бы не стал. Спойлер
procedure int10(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: Word); Interrupt; var s1: string; begin asm cli end; circlemrk:=circlecnt; ismrk :=true; asm mov al, 20h out 0a0h, al out 20h, al sti end; end;
{$F-}
const TIMERINTR = 8; PIT_FREQ = $1234DD; var BIOSTimerHandler : procedure; clock_ticks, counter : longint; highl:boolean; odd:boolean; { ──────────────────────────────────────────────────────────────────────┘ The clock_ticks variable will keep track of how many cycles the PIT has had, it'll be intialised to 0. The counter variable will hold the new channel 0 counter value. We'll also be adding this number to clock_ticks every time our handler is called. Next we need to do some initialization: ──────────────────────────────────────────────────────────────────────┐ } procedure SetTimer(TimerHandler : pointer; frequency : word); begin
{ Do some initialization } clock_ticks := 0; counter := $1234DD div frequency;
{ Store the current BIOS handler and set up our own } GetIntVec(TIMERINTR, @BIOSTimerHandler); SetIntVec(TIMERINTR, TimerHandler);
{ Set the PIT channel 0 frequency } Port[$43] := $34; Port[$40] := counter mod 256; Port[$40] := counter div 256; end; { ──────────────────────────────────────────────────────────────────────┘ Pretty straightforward stuff. We save the address of the BIOS handler, install our own, set up the variables we'll use and program PIT channel 0 for the divide-by-N mode at the frequency we need. This next bit is what we need to do once our program is finished. It just resets everything back to normal. ──────────────────────────────────────────────────────────────────────┐ } procedure CleanUpTimer; begin { Restore the normal clock frequency } Port[$43] := $34; Port[$40] := 0; Port[$40] := 0; { Restore the normal ticker handler } SetIntVec(TIMERINTR, @BIOSTimerHandler); end; { ──────────────────────────────────────────────────────────────────────┘ Ok, here's our actual handler. This particular handler just writes an asterix (*) to the screen. Then it does the checks to see if the BIOS handler should be called. If so it calls it, if not it acknowledges the interrupt itself. ──────────────────────────────────────────────────────────────────────┐ } procedure Handler; Interrupt; begin { DO WHATEVER WE WANT TO DO IN HERE }
{ ---------- таймерное прерывание, реализация рабочих режимов} case ruled of 10 : begin ruled:=21; end; 21 : begin ruled:=22; end; 300 : begin ruled:=0; end; end; {case}
{ Adjust the count of clock ticks } clock_ticks := clock_ticks + counter; { Is it time for the BIOS handler to do it's thang? } if clock_ticks >= $10000 then begin { Yep! So adjust the count and call the BIOS handler } clock_ticks := clock_ticks - $10000; asm pushf end; BIOSTimerHandler; end { If not then just acknowledge the interrupt } else Port[$20] := $20; end;
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Рад, что решили проблему. ДОСовские программки и турбо паскаль советую пускать под эмулятором ДОСа: "DOSBox"(виндовский работает менее корректно).-посмотри загрузку компа. Когда я перешел с 386 компа на пентьюум, то ВР при запуске выдавал ошибку переполнения, т.к. при-иницилизации проги с подключением модуля "CRT'(куда входи "delay") происходит калибровка скорострельности проца для создания нужной задежки. Там, если посмотреть ASM-код, цикл считать до N, а дальше смотрится по ДОС времени время цикла. С появление шустрых процов ДОС-таймеры не успевали обновиться и возникала ошибки "деление на 0" или переполнение. Патч появился быстро, наверное его Вы м скачали (там длину цикла увеличили). Меня удивляет, что не было "Run time error"- скорей всего вы это галочками заблокировали.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения