Assembler - язык неограниченных возможностей


Таймер - часть 2


    000: прерывание IRQ0 при достижении нуля

    001: ждущий мультивибратор

    010: генератор импульсов

    011: генератор прямоугольных импульсов (основной режим)

    100: программно запускаемый одновибратор

    101: аппаратно запускаемый одновибратор

бит 0: формат счетчика:

    0 — двоичное 16-битное число (0000 – FFFFh)

    1 — двоично-десятичное число (0000 – 9999)

Если биты 7 – 6 равны 11, считается, что байт, посылаемый в порт 43h, — команда чтения счетчиков, формат которой отличается от команды программирования канала:

    биты 7 – 6: 11 (код команды чтения счетчиков)

    биты 5 – 4: режим чтения:

    00: сначала состояние канала/потом значение счетчика

    01: значение счетчика

    10: состояние канала

биты 3 – 1: команда относится к каналам 3 – 1

Если этой командой запрашивается состояние каналов, новые команды будут игнорироваться, пока не прочтется состояние из всех каналов, которые были заказаны битами 3 – 1.

Состояние и значение счетчика данного канала получают чтением из порта, соответствующего требуемому каналу. Формат байта состояния имеет следующий вид:

    бит 7: состояние входа OUTx на момент выполнения команды чтения счетчиков. Так как в режиме 3 счетчик уменьшается на 2 за каждый цикл, состояние этого бита, замороженное командой фиксации текущего значения счетчика, укажет, в каком полуцикле находился таймер

    бит 6: 1/0 — состояние счетчика не загружено/загружено (используется в режимах 1 и 5, а также после команды фиксации текущего значения)

    биты 5 – 0: совпадают с битами 5 – 0 последней команды, посланной в порт 43h

Для того чтобы запрограммировать таймер в режиме 3, в котором работают каналы 0 и 2 по умолчанию и который чаще всего применяют в программах, требуется выполнить следующие действия:




Начало  Назад  Вперед