Для задания временных интервалов и формирования сигналов с различными временными параметрами в IBM PC/XT применяется программируемый таймер 8253, в AT - 8254. С точки зрения программиста они идентичны. В состав таймера входят: буфер шины данных, схема управления вводом-выводом и три независимых канала: канал 0, канал 1, канал 2.
Каждый канал содержит следующие регистры:
- состояния канала RS (8 разрядов);
- управляющего слова RSW (8 разрядов);
- буферного регистра OL (16 разрядов);
- регистра счетчика СЕ (16 разрядов);
- регистр констант пересчета CR (16 разрядов).
Каналы таймера подключаются к внешним устройствам при помощи трех линий:
GATE - управляющий вход;
CLK (CLOCK) - вход тактовой частоты;
OUT - выход таймера.
Регистр счетчика СЕ работает в режиме вычитания. Его содержимое уменьшается по заднему фронту сигнала CLK при условии, что на вход GATE подан уровень логической единицы. В зависимости от режима боты таймера при достижения счетчиком СЕ нуля тем или иным способом изменяется выходной сигнал OUT.
Регистр констант пересчета CR может загружаться в регистр счетчика, если это требуется в текущем режиме работы таймера.
Схема взаимодействия регистров канала i (i=0,1,2):
Программирование канала осуществляется путем вывода управляющих слов в регистр управляющего слова и начального значения в его счетчики.
Возможны 6 режимов работы каналов таймера.
Однако на практике используются только 2 из них: второй и третий.
Режим 2 (генератор импульсов). При загрузке в регистр CR значения счетчика происходит автоматическая пересылка его в счетчик СЕ. Если на входе GATE установлен высокий уровень сигнала (счет разрешен), то происходит декремент регистра СЕ с приходом каждого тактового импульса. Когда значение счетчика становится равным 0, на выходе OUT генерируется короткий отрицательный импульс и происходит новая загрузка счетчика значением, находящимся в регистре CR (новым или прежним). Если на вход GATE подается низкий уровень сигнала, то счет прекращается и на выходе OUT возникает высокий уровень сигнала (импульсы не выдаются). При новом разрешении счета происходит перезагрузка счетчика. Таким образом происходит генерация коротких импульсов с постоянной частотой, зависящей от числа в регистре CR.
Режим 3 (генератор меандра). Аналогичен режиму 2, но длительность отрицательного и положительных импульсов на выходе OUT за один цикл счетчика равны и составляют половину периода счета. Если в CR загружено четное число, то длительность положительного и отрицательного импульсов равна n*Т/2, где n - число в CR, Т - период тактовых импульсов. Если в CR загружено нечетное число, то длительность положительного импульса равна (n+1)*Т/2, а отрицательного - (n-1)*Т/2. Таким образом генерируется последовательность чередующихся импульсов одинаковой длительности.