ОМЭВМ имеет встроенный генератор тактовых импульсов, к которому необходимо присоединять кварцевый резонатор с частотой 1 -12 МГц, LC-цепочку или внешний генератор
На рис. 5 показано формирование машинных циклов ОМЭВМ. Все машинные циклы одинаковы и состоят из 12 периодов сигнала ALE. Практически все команды выполняются за один или два машинных цикла, кроме команд умножения MUL A,B и деления DIV A,B, продолжительность выполнения которых составляет 4 машинных цикла.
Рис. 5. Синхронизация ОМЭВМ
4. Блок таймеров/счетчиков
В состав блока входят:
·два 16-разрядных регистра Т/С0 и Т/С1;
· восьмиразрядный регистр режимов Т/С (TMOD);
· восьмиразрядный регистр управления (TCON);
· схема инкремента;
· схема фиксации INT 0, INT 1, T0, T1;
· схема управления флагами;
· логика управления Т/С.
Режим работы каждого Т/С определяется значением битов М0, М1 в регистре TMOD. Т/С 0 и Т/С 1 имеют 4 режима работы:
· режим 0 (М0=0, М1=0) – Т/С представляет собой устройство на основе 13-разрядного регистра, функцию делителя на 32 выполняют регистры TL0, TL1;
· режим 1 (М0=0, М1=1) – аналогичен режиму 0 отличие в том, что данный режим превращает Т/С в устройство на основе 16-разрядного регистра;
· режим 2 (М0=1, М1=0) – Т/С представляет собой устройство на основе 8-разрядного регистра;
· режим 3 (М0=1, М1=1) – Т/С 1 в режиме 3 заблокирован и просто сохраняет свой счет (значение кода в регистре Т/С). Т/С 0 представляет собой 2 независимых устройства на основе 8-разрядных регистров TL0, TH0. Устройство на основе TL0 может работать только в режиме таймера.
Во всех режимах, кроме режима 2, после переполнения Т/С счет продолжается с величины 00H, если Т/С не выключить с помощью битов TR0, TR1 или входов INT0, INT1.
Оба счетчика могут работать в двух режимах:
· внутренний таймер, когда на вход счетчика подается сигнал с внутреннего тактового генератора (частота сигнала Fкв/12);
· счетчик событий, когда на вход счетчика подается внешний сигнал с вывода T0 (для Т/С0), T1 (для Т/С1).
Переключение режимов производится установкой битов C/T0, C/T1 в управляющем регистре TMOD.
Программирование таймеров-счетчиков сводится к установке их режимов (установке соответствующих битов в регистре TMOD) и запуска счетчика установкой соответствующего бита в регистре TCON. Причем надо учитывать, что TCON допускает побитовую адресацию (т.е. в командах можно обращаться непосредственно к определенному биту), а TMOD не допускает побитовую адресацию (т.е. для установки соответствующего бита надо записывать в регистр целый байт с определенным значением требуемых битов). В табл. 2. указаны биты для управления таймерами.
Таблица 2.
Регистр TMOD = 89H
Gate1 | C/T1 | M11 | M01 | Gate0 | C/T0 | M10 | M00 |
Бит | Наименование | Назначение бита | Доступ к биту |
0,1 | М00, М10 | Биты режима для таймера 0. | Програм-мно |
C/T0 | C/T0 = 0 – режим таймера, = 1 – режим счетчика событий (сигнал со входа Т0; для таймера 0). | Програм-мно | |
Gate0 | Gate0 = 1 – запуск таймера 0, если на входе INT0 =1 и флаг TR0=1 в регистре TCON. Gate0 = 0 – запуск таймера 0, если флаг TR0=1 в регистре TCON. | Програм-мно | |
4,5 | М01, М11 | Биты режима для таймера 1. | Програм-мно |
C/T1 | C/T1 = 0 – режим таймера, = 1 – режим счетчика событий (сигнал со входа Т1; для таймера 1) | Програм-мно | |
Gate1 | Gate1 = 1 – запуск таймера 1, если на входе INT1 =1 и флаг TR1=1 в регистре TCON. Gate1 = 0 – запуск таймера 1, если флаг TR1=1 в регистре TCON. | Програм-мно |
Регистр TCON = 88H
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
Бит | Наименование | Назначение бита | Доступ к биту |
IT0 | Бит управления типом прерывания 0. Если IT0 = 1 – запуск прерывания по фронту, IT0 = 0 - запуск прерывания по низкому уровню. | Програм-мно | |
IE0 | Флаг прерывания 0. Устанавливается аппаратно при обнаружении прерывания 0, сбрасывается при обслуживании прерывания. | Аппаратно | |
IT0 | Бит управления типом прерывания 1. Если IT1 = 1 – запуск прерывания по фронту, IT1 = 0 - запуск прерывания по низкому уровню. | Програм-мно | |
IE1 | Флаг прерывания 1. Устанавливается аппаратно при обнаружении прерывания 1, сбрасывается при обслуживании прерывания. | Аппаратно | |
TR0 | Флаг управления запуском таймера 0. При программной установке – происходит запуск таймера, при программном сбросе – останов. | Програм-мно | |
TF0 | Флаг переполнения таймера 0. Устанавливается аппаратно при переполнении таймера, сбрасывается при переходе к подпрограмме обслуживания таймера 0. | Аппарат-но | |
TR1 | Флаг управления запуском таймера 1. При программной установке – происходит запуск таймера, при программном сбросе – останов. | Програм-мно | |
TF1 | Флаг переполнения таймера 1. Устанавливается аппаратно при переполнении таймера, сбрасывается при переходе к подпрограмме обслуживания таймера 1. | Аппарат-но |