Канал 0 микросхемы используется в качестве системного таймера, он работает в режиме 3. Выход OUT канала 0 подключен к линии запроса на прерывание IRQO и вырабатывает прерывание INT 8h 18.2 раза в секунду ( точное значение - 1193180/65536 раза в секунду, (CR)=0000).
Формат слова состояния канала (рис.3).
При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Он каждый раз увеличивает на 1 текущее значение 4-байтовой переменной, располагающейся в области данных BIOS по адресу 0040:006Сh-счетчик тиков таймера. Если этот счетчик переполняется (прошло более 24 часов), в ячейку 0040:0070h заносится 1.
7 6 5 4 3 2 1 0
рис. 1
7 6 5 4 3 2 1 0
рис.2.
Стандартный обработчик прерывания осуществляет также контроль за работой двигателей НГМД. Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель.
7 6 5 4 3 2 1 0
рис. 3
Еще одно действие, которое выполняет обработчик прерывания таймера, - вызов пользовательского прерывания 1Ch. После инициализации системы вектор 1Ch указывает на команду IRET.
Канал 1 работает в режиме 2, (CR) = 18 и используется для управления регенерацией памяти. Сигнал на регенерацию появляется каждые 15 мсек (Трег =1/ (1193800/18)= 15*10 ). Выход OUT канала 1 подключен ко входу канала 0 ПДП, который по сигналу таймера производит регенерацию памяти. Увеличение значения счетчика позволяет увеличить производительность процессора, однако, это может привести к потере данных в ОЗУ.
Канал 2 используется для генерации звука. Его выход OUT подключен к входу встроенного динамика. Для генерации сигналов применяется обычно режим 3. Для получения требуемой частоты звучания f, необходимо определить значение регистра (CR) = 1193180/f.
Микросхема таймера использует для обмена информацией следующие порты ввода/вывода:
Адрес
Операция
Назначение
40h
запись
Загрузка счетчика канала 0
чтение
Чтение счетчика канала 0
41h
запись
Загрузка счетчика канала 1
чтение
Чтение счетчика канала 1
42h
запись
Загрузка счетчика канала 2
чтение
Чтение счетчика канала 2
43h
запись
Запись управляющего слова в регистр режима канала
Пример: прочитать слово состояния канала 0.
…
mov al,11100010b ;команда RBC: не запоминать СЕ, читать состояние,