Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект 2009.doc
Скачиваний:
15
Добавлен:
23.02.2016
Размер:
4.08 Mб
Скачать

4.1. Використання таймерів-лічильників

ОЕОМ містить 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).