IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Работа с таймером., Таймер высокого разрешения
сообщение
Сообщение #1


Гость






И так такт таймера по умолчанию составляет 55 мс. Но в жизни есть такие чудесные моменты, когда требуется, что-нибудь периодически выполнять через 20 мс, 10 мс или даже 1 мс. В сети выложены примеры быстрых таймеров, но, честно говоря, что к чему в них я так понять и не смог. Из не проверенных данных я знаю, что изменить такт таймера с 55 мс на 10 мс условно говоря просто, вот только ни где не сказано как это сделать. Как получают более мелкие такты для меня большая загадка.
Просветите, пожалуйста.

Примеры перепрограммирования частот системного таймера находятся здесь:
http://pascal.sources.ru/datetime/index.htm

PS Я не программист, так балуюсь, С и Асм’у не обучен.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Вот, что у Питера Нортона написано:
Цитата
Одна из  скрытых возможностей IBM/PC - это наличие программируемого таймера. Он не измеряет никаких промежутков времени, а только подсчитывает импульсы основного тактового генератора системы. Для этого таймера задается число, называемое коэффициентом деления (или просто делителем), и он подсчитывает число импульсов тактового генератора и сравнивает это число с делителем. Когда эти числа сравняются, таймер выдает сигнал и снова начинает подсчет с нуля.

Системный тактовый генератор работает на частоте 1,19МГц.  Так что если таймер запрограммирован на
 10000 импульсов, он будет выдавать сигналы примерно 100 раз в секунду. Можно добиться любой частоты импульсов на выходе таймера, подбирая соответствующий делите
ь. После загрузки делителя схемы динамика запускаются для работы под управлением таймера, после чего выходные сигналы таймера будут управлять частотой формируемого звука, а
компьютер может выполнять любую другую работу.

Такой способ управления динамиком позволяет программам работать, пока динамик воспроизводит звук. Таким образом организована работа одной из процедур Бейсика, фоновая музыка или MB. Необходимо заметить, что при формировании звука с помощью таймера, он продолжает звучать до тех пор, пока он не будет отключен той же программой, которая его запустила.

Листинг 3.2. может использоваться в качестве примера формирования звуков без использования таймера. Программа на ассемблере, представленная листингом 11.1, показывает, как запустить звучание динамика с помощью таймера.

Приложение 11.1. Текст программы генерации звука с использованием таймера (Ассемблер).

      a440seg segment 'code'
            assume cs:a440seg
      a440  proc far
            mov    al,0b6h
            out    67,al
            mov    ax,2711
            out    66,al
            mov    al,ah
            out    66,al
            in  al,97
            or  al,03
            out    97,al
            int    20h
      a440  endp
      a440seg  ends
            end



Т.е. программировать таймер все-таки можно.
p.s. я тоже думаю, что ошиька в
Port[$43]:=6;
Может перепробовать все по очереди?


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Shub   Работа с таймером.   9.04.2004 13:30
Altair   А здесь можно узнать, как программировать таймер с…   16.04.2004 10:30
Shub   Спасибо, хоть там и много асма, но сообщения Vespe…   19.04.2004 14:30
Altair   Кстати очень интересную ссылку подкинул Shub, заме…   19.04.2004 18:02
Shub   Попробовал то, что предложил Vesper (имеется в вид…   19.04.2004 21:06
Altair   Хм .... Надо попробовать самому. Я тоже интерисую…   19.04.2004 21:45
Altair   Так, так .... читаем, что тут: http://www.dklab.r…   19.04.2004 22:53
Shub   Так добавлю еще одну ссылку: http://www.vcl.ru/htm…   20.04.2004 12:53
Shub   Мои попытки ускорить таймер потерпели фиаско. Port…   21.04.2004 20:56
Altair   Вот, что у Питера Нортона написано: Т.е. программ…   21.04.2004 23:52
Shub   Е-е-е, получилось. Значиться так: 43h - управляющ…   22.04.2004 13:57
Shub   Сорри, в моем примере надо вводить не 256, а 1, то…   22.04.2004 16:27
Altair   Shub, высший класс! А выше скорость не выйдет,…   22.04.2004 17:36
Guest   Спасибо :), я в курсе, что скорость выше не буде…   22.04.2004 18:17
Altair   нашел.... Пишем модуль для работы с системным тайм…   11.03.2005 2:29
xds   f = 1193180 Гц / c где с = коэффициент деления (ч…   11.03.2005 8:20
xds   Пример программирования таймера (используется для …   11.03.2005 8:45
Aelita   А как переделать Вашу программу, если нужно еще в …   14.11.2010 9:13
Lapp   А как переделать Вашу программу, если нужно еще в …   14.11.2010 13:25
Aelita   Я работаю, как ни странно, под DOS32 (Free Pascal)…   15.11.2010 11:01
Lapp   Я работаю, как ни странно, под DOS32 (Free Pascal)…   15.11.2010 13:17
TarasBer   Что же это за код такой, что его работа так сильно…   15.11.2010 16:59


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 9:53
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name