Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Аппаратное обеспечение персонального компьютера

© Александр Фролов, Григорий Фролов
Том 33, М.: Диалог-МИФИ, 1997, 304 стр.

[Назад] [Содеожание] [Дальше]

Средства BIOS для работы с таймером

Для работы с таймером (точнее говоря, для работы с каналом 0 таймера) BIOS содержит две функции прерывания INT 1Ah и две функции прерывания INT 15h. Они позволяют прочитать текущее содержимое счетчика и изменить его, установить таймер с сигнализацией и сформировать программную задержку.

Чтение счетчика таймера

Функция 00h предназначена для чтения содержимого счетчика таймера:

Регистры на входе:

AH = 00h

Регистры на выходе:

CX = старший байт счетчика;

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

AL = 0, если с момента перезапуска таймера прошло более 24 часов

Установка счетчика таймера

Изменить содержимое счетчика таймера можно с помощью следующей функции:

Регистры на входе:

AH = 01h

CX = старший байт счетчика;

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

Регистры на выходе:

Регистры не используются

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

Однако следует учитывать, что точность формирования задержки определяется частотой обновления счетчика таймера (18.2 Гц), и может оказаться недостаточной для некоторых приложений.

Установка таймера с сигнализацией

BIOS компьютеров IBM PC/AT содержит еще две интересные функции для работы с таймером. Это функции 83h и 86h прерывания INT 15h.

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

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

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

Регистры на входе:

AH = 83h

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

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

1 - отменить работу таймера;

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

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

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

Регистры на выходе:

Регистры не используются

Формирование задержки

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

Формат вызова функции:

Регистры на входе:

AH = 86h

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

DX = младшее слово счетчика;

Регистры на выходе:

Регистры не используются


[Назад] [Содеожание] [Дальше]