Використання таймерів-лічильників
ОЕОМ містить 2 програмованих 16-розрядних таймера-лічильника зовнішніх подій Т/С, які позначаються: Т/С0 і Т/С1. Таймери-лічильники можуть програмуватися на режим таймера або лічильника зовнішніх подій. У режимі таймера вміст Т/С инкрементируется в кожному машинному циклі, тобто з інтервалом, де - період частоти зовнішнього кварцевого резонатора. У режимі лічильника зовнішніх подій Т/С инкрементируются під впливом переходу з логічної 1 в логічний 0 зовнішнього сигналу на входах Т0, Т1 (лінії Р3.4, Р3.5). Для розпізнавання перепаду з 1 в 0 потрібний не менше двох машинних циклів. У фазі S5 P2 першого МЦ на вході Ti (i = 0,1) фіксується значення логічною 1. У фазі S5 P2 наступного МЦ розпізнається нульове значення сигналу на вході Ti (тобто виявляється перепад з 1 в 0). У черговому МЦ здійснюється інкремент вмісту Т/С.
Отже, мінімальний період і максимальна частота дотримання імпульсів на вході Ti, що ідентифікують настання зовнішніх подій, визначаються з виразів
(1)
Для того, щоб при визначенні перепаду з 1 в 0 логічних 1 і 0 на вході Ti були зафіксовані, тривалість імпульсів і пауз повинна задовольняти співвідношенням
(2)
Логічно кожен Т/С розбитий на 2 частини по 8 біт, TH0, що позначаються, TL0 для T/C0 і TH1, TL1 для T/C1. Останні можна використовувати як 8-розрядні регістри загального призначення, якщо заздалегідь зупинити Т/С, скинувши біти TR0 = TR1 = 0 в регістрі РУСТ (TCON).
Початкові значення в регістри THi, TLi (i = 0,1) при програмуванні Т/С записуються довільно.
Управляти рахунком (вирішувати / забороняти) можна програмно і апаратний.
Регістри THi і TLi програмно доступні по запису і читанню.
При переповнюванні Т/С в процесі рахунку встановлюються прапори TFi (i = 0,1) в регістрі РУСТ (TCON), які можуть викликати переривання основної програми або опитуватися програмно.
Для програмування і управління роботою Т/С призначено два регістри: TMOD і TCON. Позначення і призначення їх окремих розрядів приведені в таблицях 10.13.
Таймери / лічильники можуть працювати в одному з 4-х режимів роботи: 0, 1, 2 і 3.
4.1.1. Режим 0. Установка бітів М0 = 0, М1 = 0 в регістрі TMOD налаштовує обоє таймера на роботу в режимі 0. Спрощена структура Т/С в цьому режимі приведена на рисунку 8.
Рисунок 8 – Спрощена структурна схема таймера/счетчика в режимі 0
Кожен Т/С працює як 13-розрядний лічильник. 5 молодших розрядів виконують функцію попереднього дільника вхідної частоти на . Значущими в цьому режимі є 5 молодших розрядів регістрів TLi і 8 розрядів THi. Обоє Т/С можуть працювати як таймери або лічильники зовнішніх подій залежно від значень розрядів в регістрі TMOD.
Є наступні можливості останову (заборони) і включення (дозволи) рахунку:
Програмно: 1) сброс/установка бітів TRi в TCON при GATEi = 0 або INTi = 1 забороняє / вирішує рахунок;
2) установка/сброс біта GATEi в регістрі TMOD при TRi = 1 і INTi = 0 забороняє / вирішує рахунок.
Апаратний: нульовий / одиничний сигнал на вході INTi при GATEi = 1 і TRi = 1 запрещает/разрешает рахунок.
У обох випадках (при програмному і апаратному управлінні) при останові в T/Ci зберігається поточне значення, а після включення рахівниць продовжується з цього значення, якщо під час останову T/Ci не перезавантажувався програмно.
Використання T/Ci для виміру тривалості одиничного імпульсу tи.вх на вході INTi. Програмно встановлюємо TRi = 1, GATEi = 1, C/Ti = 0. Забороняємо переривання від вступу активного логічного нульового сигналу на вході INTi. Завантажуємо в T/Ci початкове значення . До вступу імпульсу на вході INTi присутній логічний 0 і T/Ci стоїть (рахунок заборонений).
Під час вступу одиничного імпульсу рахівниць дозволений на якийсь час, рівне тривалості цього імпульсу. Після закінчення імпульсу рахівниць знову апаратний забороняється і T/Ci зупиняється. По різниці чисел в таймері після і до рахунку і відомій частоті перемикання T/Ci
визначуваний tи.вх.
При переповнюванні T/Ci (перехід вмісту регістра T/C із стану «всі одиниці» в стан «всі нулі») встановлюються прапори TFi в регістрі TCON.
На виході першого T/C у момент переповнювання виробляється короткий імпульс, який поступає в блок синхронізації послідовного інтерфейсу.
4.1.2. Режим 1. Установка бітів М0 = 1, М1 = 0 в регістрі TMOD налаштовує обоє таймера на роботу в режимі 1. Спрощена структура T/Ci в цьому режимі приведена в [1].
Кожен T/Ci працює як 16-розрядний лічильник. У останньому програмування, робота і застосування T/Ci аналогічні режиму 0.
4.1.3. Режим 2. Установка бітів М0 = 0, М1 = 1 в регістрі TMOD визначає роботу T/Ci в режимі 2. Спрощена структура T/Ci в цьому режимі приведена на рисунку 9.
Рисунок 9 – Спрощена структурна схема таймера/счетчика1 в режимі 2
Кожен T/Ci може працювати як автоперезавантажуваний 8-розрядний таймер/счетчик. Як лічильник використовується регістр TLi, а THi містить програмно встановлене початкове значення, з якого ведеться рахунок. При кожному черговому переповнюванні TLi встановлюється прапор переповнювання TFi і автоматично початкове значення перезавантажується з THi в TLi.
На виході першого T/Ci в цьому режимі виробляється послідовність прямокутних імпульсів, яка поступає в блок послідовного інтерфейсу і може використовуватися для синхронізації роботи останнього.
4.1.4. Режим 3. Установка бітів М0 = 1, М1 = 1 визначає режим 3. Спрощена структура T/C0 в цьому режимі дана на рисунку 10.
Рисунок 10 – Спрощена структурна схема таймера/счетчика0 в режимі 3
Режим 3 має ряд особливостей. Якщо в цьому режимі запрограмувати обоє таймера, то T/C1 зупиняється, а T/C0 працює як 2 незалежних 8-розрядних регістра TH0 і TL0.
Пристрій на основі регістра TL0 може працювати в режимі таймера і в режимі лічильника зовнішніх подій. За ним зберігаються всі біти управління T/C0, воно реагує на дію по входах T0 і INT0. При переповнюванні TL0 встановлюється прапор TF0.
Пристрій на основі регістра TH0 може працювати лише в режимі таймера. Для управління воно використовує частину бітів, керівників роботою T/C1, який в режимі 3 зупинений. TR1 управляє включенням / виключенням TH0. При переповнюванні TH0 встановлюється прапор TF1.
Друга особливість режиму 3 полягає в тому, що T/C0 може програмуватися в режим 3, а T/C1 – в режим 0, 1или 2. Оскільки біт TR1 управляє роботою TH0, то T/C1 в режимах 0, 1, 2 при GATE1 = 0 завжди включений, а при GATE1 = 1 – вимкнений. Прапор переповнювання TF1 використовується TH0, тому при переповнюванні в режимах 0 і 1 T/C1 обнуляється, а в режимі 2 перезавантажується, не встановлюючи прапор переповнювання. Останні керівники біти і сигнали T/C1 використовуються аналогічно режимам 0, 1, 2.
T/C1 апаратний пов'язаний з блоком синхронізації послідовного інтерфейсу. При роботі в режимах 0, 1, 2 при переповнюванні T/C1 завжди виробляє тактовий імпульс, що поступає в інтерфейс. Тому режим 3 для T/C0 зручно застосовувати коли:
1. Потрібна робота двох 8-розрядних таймерів (TH0, TL0) і формування тактових імпульсів для
послідовного інтерфейсу (T/C1 в режимі 2).
2. Потрібна робота 8-розрядного таймера (TH0), 8-розрядного лічильника зовнішніх подій (TL0) і формування синхроімпульсів для послідовного порту (T/C1 в режимі 2).
Дата добавления: 2020-02-05; просмотров: 631;