powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / DOS. Задержка менее 50 мс.
12 сообщений из 12, страница 1 из 1
DOS. Задержка менее 50 мс.
    #33658495
matsic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33658530
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно программно изменить частоту таймера. Подробностей не помню, смотри Джордейна
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33658954
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смутно помнится, что с 43 порта можно было снять время точнее.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33659142
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
matsicОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.

мона по разному...
постоянным сканированием с порта PIT (8253)...это то что осталось от делителя там...
Либо перепрограммируя данный девайс получить прерывание от него не 1/18 раз в секунду а чаще. В принцепе что и делали многие игры.

Такая точность мягко говоря - редко встречается в задачах. Форточки к примеру имеют именно этот (10 мс.) порог точности, на всевозможных слипах.


с уважением
(круглый)
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33659615
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07Смутно помнится, что с 43 порта можно было снять время точнее.

Ага, именно на 43 порт он прямо и передается непосредственно из института метрологии в Петербурге.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33659887
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да!? А мне говорили, что по средам из Гринвича.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33660279
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это зависит от того, где был компьютер произведен. Китайские желтые материнки вообще по звездам время мерили, на основе старинных китайских философских теорий.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33661674
matsic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
круглыймона по разному...
постоянным сканированием с порта PIT (8253)...это то что осталось от делителя там...
Либо перепрограммируя данный девайс получить прерывание от него не 1/18 раз в секунду а чаще.
А пример можно?:)
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33661850
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
matsicА пример можно?:)


опс...тут Вы мня и поймали... под рукой примеров нема...
а вот поиск в инете катит...
для затравки дам ссылку на примеры и описание по данной тематике.. Кстати похоже на выдержки из Джордена (как тут выше прозвучало - кстати не плохая книга, в своё время многие по ней учились...правда в электронном виде её больше знают, чем печатном)...

PIT (программируемый интервальный таймер - 8253

там же, заметки про прерывания под досом

если будут проблемы - спрашивайте. отвечу, но не сразу. нуна будет не забыть подтащить сидюк с кодом под досик...правда код на азме...

с уважением
(круглый)
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33662299
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivАга, именно на 43 порт он прямо и передается непосредственно из института метрологии в Петербурге.
Не поленился достать из закромов DOS help:

HELP6 Ports 40H-43H control the PC timer circuits. There are three timer
channels:

0) Channel 0 is used as a general system timer. It handles the periodic
"timer-tick". It is initialized by the BIOS to invoke INT 08H
(IRQ 0) 18.206 times per second (once every 54.936 milliseconds).

1) Channel 1 is used in a dedicated manner to support the memory refresh
function. The output is used to generate a direct-memory access
(DMA) cycle request on DMA channel 0. This DMA channel is used to
refresh the systems RAM by performing a dummy memory-read every so
often (once every 15 microseconds on the original PC).

This is critical to system operation, so we are usually advised to
keep "hands off". However, I have seen experiments in which this
timer was slowed down a bit in order to increase overall system
performance by a few percent. Too slow of a value eventually causes
fatal memory errors.

2) Channel 2 is used to drive the audio speaker on the system board (it
originally handled cassette-tape I/O, but that is surely moot). The
output of channel 2 can be directed to control the speaker via I/O
port 61H (see PPI Ports and Speaker Control).

Channel 2 is available for application-controlled timing tasks;
however, it is a global resource. Rather than using direct port I/O
you are advised to use fns such as INT 1aH and INT 15H 86H for timed
operations.

Port Description
ЯЯЯЯ ЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯ
40H Read/Write: Count value for counter 0
Port 43H bits 4-5 control the way the counter is set.
41H Read/Write: Count value for counter 1
41H Read/Write: Count value for counter 2
ДДДД ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
43H Write: set channel's mode of operation
Ц7В6В5В4В3В2В1В0·
єch#іr/lіmode і є
УДБДБДБДБДБДБДБТЅ bits mask
АТЩ АТЩ АДТДЩ ИН 0: 01H 0=process count as binary
є є є 1=process counts as BCD
є є ИННННН1-3: 0eH select timer mode:
є є 000 = mode 0: interrupt on terminal count
є є 001 = mode 1: programmable one-shot
є є x10 = mode 2: rate generator
є є x11 = mode 3: square-wave rate generator
є є 100 = mode 4: software-triggered strobe
є є 101 = mode 5: hardware-triggered strobe
є ИНННННННННН4-5: 30H select read/load sequence:
є 00 = latch counter for stable read
є 01 = read/load most significant byte only
є 10 = read/load least significant byte only
є 11 = read/load LSB then MSB
ИНННННННННННННН6-7: c0H specify counter to affect:
00 = counter 0, 01= counter 1
10 = counter 2, 11= counter 3

See Also: Speaker Control
PPI Ports
I/O Port Map
--

Иногда полезно придержать сарказм - может вернуться.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33663883
Agent 007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
matsicОС ДОС. Процесор х86 (скорее всего 386). Функция delay() отмеряет минимум 50-60 мс. Таймер тоже с таким интервалом тикает.
А как можно отмерить меньший промежуток времени? Например 10 мс.

Вариант 1: комп может на это время уснуть.

Вариант 2: функция задержки проверяет во время своей работы значение какой-либо переменной и может быть завершена досрочно.

Есть более тупой способ - задаеш параметр честота процесора и делаеш цикл ... до 10,000 - 100,000 - 1,000,000 ... сколько нужно.
...
Рейтинг: 0 / 0
DOS. Задержка менее 50 мс.
    #33664211
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07
Иногда полезно придержать сарказм - может вернуться.

Да ради бога !!!
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / DOS. Задержка менее 50 мс.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]