Исследование программируемого таймера, страница 3

Для приведения каждого из счетчиков ПТ (независимо от других) в исходное состояние, соответствующее выбранному режиму, и для загрузки его информацией о величине счета процессор должен сначала записать в регистр режима соответствующего канала таймера необходимое УС (рис. 3), а затем уже осуществить ввод в счетчик запрограммированного количества байтов. После программирования таймер готов к выполнению задач, связанных с отсчетом времени.

Рис. 3. Формат УС для выбора режима работы

Рассмотрим назначение каждого бита в УС (рис. 3). Так разряд D0 определяет тип счета: двоичный или двоично-десятичный, а разряды D1, D2, D3 задают режимы работы канала. Разряды D4 и D5 определяют количество байтов информации, необходимое для загрузки счетчика или чтения его показаний. D4=0, D5=0 − особые команды, применяемые при чтении "на лету" показаний счетчика. Используя эту команду, программист имеет возможность прочитать содержимое счетчика, не прерывая процесса счета (выполнить операцию "защелкивания"). Разряды D6 и D7 служат адресом для выбора режима соответствующего канала при записи УС или для выбора канала при вводе команды чтения "на лету" показаний счетчика. Таким образом, например, для установки канала 1 в режим 4 при условии дальнейшей записи в него только младшего байта числа в двоичном коде требуется задать УС вида "01011000".

Режим чтения

В большинстве случаев использование счетчиков требует считывания величины текущего счета и принятия на основе этой величины тех или иных решений. Особенно это характерно для счетчиков событий.

Во время работы счетчика величина текущего счета передается в буферные регистры и может быть прочитана двумя способами:

1.  путем выполнения обычной операции чтения;

2.  путем ввода специальной команды и последующего чтения (чтение "на лету").

При первом способе для обеспечения стабильного показания счета (считывается текущая информация) работа счетчика должна быть приостановлена путем подачи на управляющий вход GATE напряжения логического нуля (режимы 0, 2, 3 и 4) или с помощью внешней логической схемы, которая прекратит подачу на счетчик тактовых импульсов CLK.

Из-за наличия в ПТ специальной внутренней логической схемы операцию чтения содержимого счетчика необходимо обязательно выполнить до конца, т.е. если запрограммировано чтение двух байтов, то нельзя, прочитав только один младший байт, перезагружать счетчик новой счетной величиной. Содержимое счетчика в этом случае извлекают подачей от процессора двух команд INследующим образом:

1.  выполняют первую операцию чтения и извлекают содержимое младшего байта;

2.  выполняют вторую операцию чтения и извлекают содержимое старшего байта.

Второй способ чтения заключается в том, что программист может считывать содержимое счетчика, не прерывая процесса счета. Для этой цели ПТ имеет специальную внутреннюю логическую схему, обращение к которой возможно с помощью операции записи определенного УС (рис. 4). В разрядах D7, D6 задается номер канала, в котором нужно произвести операцию "защелкивания". Разряды D5=0, D4=0 указывают, что необходимо произвести операцию "защелкивания", а остальные могут принимать произвольное значение. Адресные входы A0 и A1 при записи УС должны быть установлены в состояние логической единицы.

Рис. 4. Формат УС при операции «защелкивания»

Запись в таймер УС для "защелкивания" счета не влияет на содержимое регистра режима. По этой команде в буферных регистрах счетчика "защелкивается" текущая величина счета, т.е. происходит ее запоминание в период ввода данной команды. Далее следует обычная операция чтения. Для этого способа справедливо такое же ограничение, что и для первого способа, т.е. операция чтения обязательно должна быть завершена полностью в соответствии с запрограммированным числом байтов. После полного завершения операции чтения снимается запрет и в буферные регистры счетчика поступает текущее значение счета.