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

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

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

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


Гость






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

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

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


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

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

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


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

 



- Текстовая версия 21.06.2025 9:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"