Структура регистров таймера
Таймеру соответствуют три регистра счетчика и один управляющий регистр (табл. 79).
Табл. 79. Регистры таймера.
Адрес | Назначение |
40h | Счетчик 0 (чтение/запись). |
41h | Счетчик 1 (чтение/запись). |
42h | Счетчик 2 (чтение/запись). |
43h | Управляющий регистр. |
Формат управляющего регистра показан в табл. 80.
Табл. 80. Формат управляющего регистра.
Биты | ||||||||
Значение | SC1 | SC0 | RW1 | RW0 | М2 | M1 | M0 | BCD |
Старшие два разряда SC1 и SC0 позволяют выбрать счетчик, либо получить информацию по состоянию канала (режим SC1=1 и SC0=1 определен только для микросхемы 8254 и последующих версий; для 8253 этот режим является запрещенным) (табл. 81).
Табл. 81. Номер счетчика.
SС1 | SС0 | Значение |
Счетчик 0. | ||
Счетчик 1. | ||
Счетчик 2. | ||
Состояние канала. |
Разряды RW1RW0 определяют способ загрузки делителя через однобайтовый порт (табл. 82). Управляющее слово RW1=0 и RW0=0 используется для фиксации текущего содержимого регистров счетчика в буферном регистре. Поля M и BCD при этом игнорируются.
Табл. 82. Тип операции чтения-записи.
RW1 | RW0 | Значение |
Фиксировать текущее значение счетчика. | ||
Чтение/запись только LSB. | ||
Чтение/запись только MSB. | ||
Чтение/запись LSB сначала, затем MSB. |
Режим работы счетчика задается разрядами M2M1M0 (табл. 83).
Табл. 83. Выбор режима работы.
Режим | М2 | М1 | М0 | Значение |
Прерывание от таймера. | ||||
Программируемый ждущий мультивибратор. | ||||
x | Программируемый генератор импульсов. | |||
x | Генератор меандра. | |||
Программно-запускаемый одновибратор. | ||||
Аппаратно-запускаемый одновибратор. |
Разряд BCD служит для задания системы счисления (двоичной или двоично-десятичной) (табл. 84). Диапазон значений в двоичной системе 0…65535, в двоично-десятичной – 0…9999.
Табл. 84. Выбор системы счисления.
S0 | Значение |
Двоичная. | |
Двоично-десятичная. |
В режиме SC1=1 и SC0=1 управляющий регистр изменяет свою структуру (табл. 85). Такой режим носит название «Read back command» и позволяет выполнить операцию чтения состояния каналов либо получить содержимое регистра счетчика для указанного канала. Можно выполнить эти операции для отдельных каналов, так и для всех одновременно, если установить соответствующие биты в 1 (табл. 86).
Табл. 85. Формат управляющего регистра.
Биты | ||||||||
Значение | CNT | STA | C2 | C1 | C0 | x |
Табл. 86. Коды выбора счетчика.
Счетчик | C2 | C1 | C0 |
Все |
При CNT=0 и STA=1 доступно текущее значение счетчика. Для этого необходимо просто прочитать его содержимое. При CNT=1 и STA=0 доступен режим работы счетчика. В этом случае структура регистра счетчика изменится (табл. 87).
Табл. 87. Формат регистра счетчика.
Биты | ||||||||
Значение | OUT | NC | RW1 | RW0 | M2 | M1 | M0 | BCD |
Формат состояния канала напоминает формат регистра управляющего слова, за исключением двух старших разрядов. Назначения разрядов M2M1M0 и BCD останется прежними. Разряд OUT определяет текущий уровень на выходе счетчика в момент выполнения команды. Разряд NC используется, в основном, в режимах 1 и 5 для определения, произошла ли загрузка делителя из регистра RD в регистр счетчика RCNT.