Блок таймеров
Блок таймеров (рис. 8.13) включает в себя три однотипных канала, каждый из которых содержит: □ пятиразрядный десятичный реверсивный счетчик T, на вход которого поступают метки времени (таймер); □ программируемый предделитель D; □ регистр управления таймером CTR; □ флаг переполнения таймера FT. Регистры таймеров T доступны по записи и чтению (адреса 1, 3, 5 соответственно для T1, T2,Т3). Программа в любой момент может считать текущее содержимое таймера или записать в него новое значение. На входы предделителей поступает общие для всех каналов метки времени CLK с периодом 1 мс. Предделители в каждом канале программируются независимо, поэтому таймеры могут работать с различной частотой. Рис. 8. 13. Блок таймеров (Страница255) Регистры управления CTR доступны по записи и чтению (адреса 2, 4, 6) и содержат следующие поля: □ T (разряд 5) — флаг включения таймера; □ EI (разряд 4) — флаг разрешения формирования запроса на прерывание при переполнении таймера; □ I/D (разряд 3) — направление счета (инкремент/декремент), при I/D=0 таймер работает на сложение, при I/D=1 — на вычитание; □ k (разряды [1: 2]) — коэффициент деления предделителя (от 1 до 99). Флаги переполнения таймеров собраны в один регистр — доступный только по чтению регистр состояния SR, имеющий адрес 0. Разряды регистра (5, 4 и 3 для T1, T2, Т3 соответственно) устанавливаются в 1 при переполнении соответствующего таймера. Для таймера, работающего на сложение, переполнение наступает при переходе его состояния из 99 999 в 0, для вычитающего таймера — переход из 0 в 99 999. В окне обозревателя (рис. 8.14) предусмотрена кнопка Сброс, нажатие которой сбрасывает в 0 все регистры блока таймеров, кроме CTR, которые устанавливаются в состояние 001000. Таким образом, все три таймера обнуляются, переключаются в режим инкремента, прекращается счет, запрещаются прерывания, сбрасываются флаги переполнения и устанавливаются коэффициенты деления предделителей равными 01. Рис. 8.14. Окно обозревателя блока таймеров Программное управление режимами блока таймеров осуществляется путем записи в регистры CTR соответствующих кодов. Запись по адресу SR числа с 1 в третьем разряде интерпретируется блоком таймеров как команда, причем младшие разряды этого числа определяют код команды: □ ххх100 — общий сброс (эквивалентна нажатию кнопки Сброс в окне обозревателя); □ xxx10l — сброс флага переполнения таймера FT1; □ ххх102 — сброс флага переполнения таймера FT2; □ ххх103 — сброс флага переполнения таймера FT3.
|