Для задания временных интервалов и формирования сигналов с различными временными параметрами применяется программируемый таймер 8253 (отечественный аналог КР580ВИ53) или 8254. С точки зрения программиста они идентичны. В состав таймера входят: буфер шины данных, схема управления вводом-выводом и три независимых канала, каждый из которых содержит регистр режима, схему управления каналом, буфер и 16-разрядный счетчик.
Программирование канала осуществляется путем вывода управляющих слов в регистр режима каналов и начального значения в его счетчики. Каждый канал имеет управляющий вход GATE и выход OUT и может работать в одном из следующих шести режимов:
- Режим 0 (прерывание терминального счета). После записи управляющего слова в регистр режима канала на выходе OUT устанавливается напряжение низкого уровня; загрузка счетчика не изменяет это состояние. Затем начинается декремент счетчика (последовательное вычитание из него единицы). В момент, когда счетчик обнулится, на выходе OUT устанавливается напряжение высокого уровня и сохраняется до загрузки счетчика новым значением. Счет возможен только при наличие сигнала высокого уровня на входе GATE. Низкий уровень этого сигнала или ниспадающий фронт запрещают счет.
Перезагрузка счетчика во время счета приводит к следующему: загрузка младшего байта останавливает текущий счет, загрузка старшего байта запускает новый цикл счета. Минимально допустимое значение счетчика равно 2.
- Режим 1 (ждущий мультивибратор). На выходе OUT формируется отрицательный импульс длительностью t=n*T, где n-число, загруженное в счетчик, T-период тактовых импульсов. Низкий уровень на выходе OUT устанавливается со следующего такта после подачи на вход GATE сигнала высокого уровня.
Загрузка в счетчик нового числа не влияет на длительность текущего импульса, а учитывается при следующем запуске. Перезапуск счетчика производится нарастающим фронтом входа GATE (без перезагрузки счетчика). Минимальное допустимое n=1.
- Режим 2(генератор частоты). Каждый раз после достижения счетчиком нуля на выходе OUT появляется отрицательный импульс с длительностью один такт. Перезагрузка счетчика сказывается только после перезапуска счетчика. При исчезновении сигнала высокого уровня на входе GATE прекращается счет и на выход OUT подается напряжение высокого уровня. Перезапуск счетчика происходит при наличии на входе GATE сигнала высокого уровня.
- Режим 3 (генератор меандра). Аналогичен режиму 2, но положительный уровень выходного сигнала занимает первый полупериод, а отрицательный-второй полупериод. Точнее, если n (начальное значение счетчика) четно, то длительность положительного и отрицательного полупериодов равна n*T/2; если же n нечетно - то (n+1)*T/2 и (n-1)*Т/2 соотвественно. Низкй уровень сигнала на входе GATE запрещает счет, на выходе OUT устанавливается сигнал высокого уровня. Высокий уровень GATE разрешает счет, а нарастание его запускает счетчик начального состояния. Отметим, что n=3 в этом режиме недопустимо.
- Режим 4 (счетчик событий). По окончании отсчета числа, загруженного в счетчик, на выходе OUT формируется отрицательный импульс длительностью один такт. Запись в счетчик во время счета младшего байта не влияет на текущий счет, а запись старшего байта перезапускает счетчик. Низкий уровень входа GATE запрещает счет, высокий - разрешает. Минимальное допустимое значение счетчика равно 1.
- Режим 5 (счетчик событий с автозагрузкой). Отличие от режима 4 состоит в том, что каждое нарастание сигнала на входе GATE перезапускает счетчик. Перезагрука счетчика не влияет на текущий цикл, однако следующий цикл определяется вновь занесенным числом.
Временные диаграммы режимов таймера приведены на следующем рисунке:

В звуковой карте имеются два таймера, адреса которых приведены в таблице:

Управляющее слово имеет следующий формат:

Существует два способа чтения текущего значения счетчика канала:
- Чтение с остановом счетчика. Для обеспечения стабильных показаний необходимо приостановить работу канала либо подачей сигнала низкого уровня на вход GATE(кроме режима 1), либо блокированием тактовых импульсов.
- Чтение "на лету". Для считывания счетчика без остановки процесса счета используется посылка в порт 43h управляющего слова в режиме "защелкивания" (см. выше). Это управляющее слово фиксирует текущее значение счетчика и Вы можете считать его младший байт, а затем старший байт.
В звуковой карте каналы таймера имеют следующее назначение.

Входы GATE всех каналов всегда имеют высокий уровень, поэтому счет на каналах разрешен всегда.
Внимание! Контроллеры ПДП и прерываний нормально работают только, если соответствующий им канал таймера работает во 2-м режиме. Поэтому, сначала нужно запрограммировать таймер, а потом разрешать передачу ПДП или прерывания от таймера.






