[an error occurred while processing this directive] [an error occurred while processing this directive]
Еще вопросик о таймере (может и не в тему) (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено просящий 12 октября 2001 г. 20:02
В ответ на: А растолкуйте мне, пожалуйста, о реализации многозадачности на персоналках (+) отправлено просто так 12 октября 2001 г. 17:33

Я прочитал, что BIOS компьютеров IBM AT содержит еще две интересные функции для работы с таймером. Это функции 83h и 86h прерывания INT 15h.
У них задержки задаются в микросекундах !!! А как они аппаратно реализуются ? Они точно не используют таймер, который генерит прерывания 18.2 раз в секунду - т. к. проверено, что эти функции реально реализуют задержки меньше, чем 55 мс!
Может есть еще какой-то таймер ?

P.S. Вот инфо об этих функциях :
Функция 83h позволяет запустить таймер на счет, указав адрес некоторого байта в оперативной памяти. Программа, запустившая таймер, сразу после запуска получает управление. По истечении времени, заданного при запуске таймера, функция устанавливает старший бит указанного байта в единицу, сигнализируя таким образом программе о завершении указанного временного интервала. Программа может также отменить работу таймера в этом режиме.

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

Приведем формат вызова функции 83h прерывания INT 15h:

На входе: AH = 83h;

AL = код подфункции:

0 - установить интервал, запустить таймер;
1 - отменить работу таймера;

CX = старший байт времени работы счетчика,
задается в микросекундах;

DX = младший байт счетчика;

ES:BX = адрес байта, в котором по истечении
интервала времени старший бит будет
установлен в 1.

На выходе: не используются.

Функция 86h специально предназначена для формирования задержек. Она позволяет определять время задержки в микросекундах, что достаточно удобно для многих задач. Во время выполнения задержки разрешены прерывания. Формат вызова функции:

На входе: AH = 86h;

CX = старший байт времени задержки,
задается в микросекундах;

DX = младший байт времени задержки.

На выходе: не используются.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru