
- •Тема 2.4. Робота системних таймерів. Механізм переривань мк mcs51. Послідовний порт uart.
- •Робота системних таймерів. Типи таймерів.
- •2. Регістр стану таймера і регістр керуючого слова. Програмування таймерів.
- •3. Механізм переривань мк mcs51.
- •4. Виконання підпрограми переривання
- •5. Послідовний порт мк 8051.
Лекція 7.(4 год.)
Тема 2.4. Робота системних таймерів. Механізм переривань мк mcs51. Послідовний порт uart.
Робота системних таймерів. Типи таймерів.
Регістр стану таймера і регістр керуючого слова. Програмування таймерів. Режими роботи.
Механізм переривань МК MCS51.
Виконання підпрограми переривання.
Послідовний порт МК 8051.
Робота системних таймерів. Типи таймерів.
В базових моделях сімейства MCS-51 є два програмованих 16-бітних таймери/лічильники (Т/С0 і Т/С1), які можуть бути використані як в якості таймерів (для реалізації програмно керованих затримок та виконання функції задання часу), так і в якості лічильників (для підрахунку зовнішніх подій). В першому випадку вміст відповідного таймера/лічильника (Т/С) інкрементується в кожному машинному циклі, тобто через кожні 12 періодів коливань кварцового резонатора, а в другому випадку – він інкрементується під дією переходу з 1 в 0 зовнішнього вхідного сигналу, що подається на відповідний (Т0, Т1) вивід МК. Вміст лічильника збільшиться на 1, якщо в попередньому циклі надійшов сигнал високого рівня (1), а в наступному – сигнал низького рівня (0). Так як на розпізнавання періоду потрібно 2 машинні цикли, то максимальна частота підрахунку вхідних сигналів дорівнює 1/24 частоти резонатора. На тривалість періоду вхідних сигналів обмежень зверху немає. Для гарантованого читання вхідний сигнал повинен утримувати значення 1, як мінімум, на протязі одного машинного циклу мікроЕОМ.
Регістри Т/С0 і Т/С1 використовуються для зберігання результатів підрахунку, кожен з них може бути використаний як РЗП, якщо відповідний таймер не використовується. Початковий код лічби заноситься в регістри Т/С програмно. Ознакою закінчення лічби є переповнення регістра Т/С, тобто перехід його вмісту зі стану «всі одиниці» в стан «всі нулі».
Сторожовий таймер (Watchdog) – це схема, яка автоматично скидає МК, якщо не отримує від управляючої системи сигналу, що підтверджує, що не відбулося ніякого збою. Такі пристрої використовуються в системах, де є електричні завади або збої по живленню, і де потрібно забезпечити велику надійність.
2. Регістр стану таймера і регістр керуючого слова. Програмування таймерів.
Для управління режимами роботи Т/С і для організації їх взаємодії з системою переривань використовуються два регістри спеціальних функцій (TMOD i TCON).
Регістр управління/статусу таймера TCON призначений для приймання і зберігання коду керуючого слова.
Призначення бітів регістра TCON
Біт |
Позначення |
Призначення |
7 |
TF1 |
Прапорець переповнення таймера 1. Встановлюється апаратно при переповненні Т/С. Скидається при обслуговуванні переривання апаратно. |
6 |
TR1 |
Біт управління таймера 1. Встановлюється, /скидається програмно для пуску/зупинки. TR=0 – вимкнений, TR=1 – увімкнений. |
5 |
TF0 |
Прапорець переповнення таймера 0. Встановлюється апаратно при переповненні Т/С. Скидається при обслуговуванні переривання апаратно. |
4 |
TR0 |
Біт управління таймера 0. Встановлюється /скидається програмно для пуску/зупинки Т/С. TR=0 – вимкнений, TR=1 – увімкнений. |
3 |
IE1 |
Прапорець запиту зовнішнього переривання по входу INT1. Встановлюється апаратно при детектуванні зрізу запиту зовнішнього сигналу INT1. (зріз/низький рівень). Скидається при обслуговуванні переривання. |
2 |
IT1 |
Біт управління типом переривання 1. Встановлюється/скидається програмно для визначення типу переривання по входу INT1. |
1 |
IE0 |
Прапорець запиту зовнішнього переривання по входу INT0. Встановлюється апаратно при детектуванні зрізу запиту зовнішнього сигналу INT0. (зріз/низький рівень). Скидається при обслуговуванні переривання. |
0 |
(IT0) |
Біт управління типом переривання 0. Встановлюється/скидається програмно для визначення типу переривання по входу INT0. |
Регістр режимів TMOD
Призначений для приймання і зберігання коду, який визначає:
один з 4 можливих режимів роботи кожного Т/С;
виконання функцій таймерів або лічильників;
керування Т/С по зовнішньому виводу.
Призначення бітів регістра TMOD
Біт |
Позначення |
Призначення |
7 для Т/С1 (3 для Т/С0) |
GATE1 (GATE0) |
Управління блокуванням. Дозволяє керувати таймером від зовнішнього виводу (INT0- для Т/С0, INT1-для Т/С1). GATE=0 – керування заборонено, GATE=1 – керування дозволено. |
6 для Т/С1 (2 для Т/С0) |
С/Т1 (С/Т0) |
Біт вибору функції таймера або лічильника. Якщо біт скинуто, то працює таймер від внутрішнього джерела сигналів синхронізації, якщо біт встановлено, то працює лічильник від зовнішніх сигналів на входах Т0 (Т1). |
5 для Т/С1 (1 для Т/С0) |
М1.1 (М1.0) |
Вибір режиму роботи. |
4 для Т/С1 (0 для Т/С0) |
М0.1 М0.0 |
Вибір режиму роботи здійснюється окремо для Т/С0 і для Т/С1 згідно зі значенням бітів М1.0(М1.1) та М0.0(М0.1):
М1 |
М0 |
Режим |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
2 |
1 |
1 |
3 |
Режими роботи Т/С.
Режим роботи кожного Т/С визначається значенням бітів М0, М1 у регістрі TMOD. Таймери Т/С0 і Т/С1 мають 4 режими роботи. Режими 0, 1, 2 – однакові для обох Т/С, у цих режимах вони повністю незалежні один від одного. Робота Т/С0 і Т/С1 у режимі 3 різна. При цьому встановлення режиму 3 в Т/С0 впливає на роботу Т/С1.
Режим 0 (М0=0, М1=0) Таймер в режимі 0 являє собою пристрій на базі 13-розрядного регістра і є 8-розрядним таймером (лічильником) з 5 розрядним перед дільником на 32. Для Т/С0 13-розрядний регістр являє собою 8 розрядів регістра ТН0 та 5 молодших розрядів регістра TL0, а для Т/С1 – 8 розрядів регістра Т/Н1 і 5 молодших розрядів регістра TL1. Вони є програмно доступними, але значущі в них лише 5 молодших розрядів. При переповненні Т/С, тобто при переході вмісту регістра Т/С зі стану «всі одиниці» в стан «всі нулі», встановлюється прапорець TF0 (для T/C0) і TF1 (для T/C1) у регістрі TCON. Установка біта GATE в 1 дозволяє використовувати таймер для вимірювання тривалості імпульсного сигналу, що подається на вхід запиту переривання.
Режим 1 (М0=1, М1=0) Відмінність від режиму 0 полягає в тому, що встановлення режиму 1 перетворює Т/С на пристрій з 16-розрядним регістром. Для Т/С0 регістр складається з програмно доступних пар TL0, ТН0, для Т/С1 – TL1, ТН1.
Режим 2 (М0=0, М1=1) У режимі 2 Т/С являє собою пристрій на базі 8-розрядного регістра TL0 для Т/С0 і TL1 для Т/С1. При кожному переповненні TL, крім установлення прапорця TF в регістрі TCON, здійснюється автоматичне перезавантаження вмісту ТН у TL. Регістри ТН0 і ТН1 завантажуються програмно. Перезавантаження TL0 з ТН0 та TL1 з TL1 не впливає на вміст регістрів ТН0 і ТН1.
Режим 3 (М0=1, М1=1) Т/С1 – заблокований і зберігає своє значення. Т/С0 в режимі 3 являє собою два незалежні пристрої на базі 8-розрядних регістрів TL0 і ТН0. Пристрій на базі TL0 може працювати як в режимі таймера так і в режимі лічильника, а на базі ТН0 – тільки в режимі таймера. Для забезпечення роботи Т/С0 в режимі 3 використовують біти TR1 і TF1, тому вони не можуть використовуватись для керування Т/С1. це призводить до того, що при встановленні Т/С0 в режим 3, а Т/С1 – в режим 0, 1 або 2, таймер Т/С1 при GATE1=1 завжди ввімкнений. При GATE1=0 вмикання Т/С1 визначається зовнішніми сигналами аналогічно розглянутому режиму 0. При переповненні у режимах 0 і 1 Т/С1 обнулюється, а в режимі 2 – перезавантажується без встановлення прапорця TF1.
Оскільки Т/С1 апаратно пов’язаний з послідовним портом, то під час роботи Т/С0 в режимі 3 можна використовувати Т/С1 в режимі 2 для задання швидкості роботи послідовного порту, або інших завдань, що не потребують переривань.