В мікроконтролерах сімейства MCS-51 звичайно є два 16-бітних таймера/лічильника T/C0 і T/C1, які можуть бути використані як в якості таймерів, так і в якості лічильників зовнішніх подій. Кожен з них складається з двох 8-бітних регістрів даних TH0 (старший байт) і TL0 (молодший байт) для таймера ТС0 або TH1 і TL1 для таймера ТС1.
У режимі таймера вміст цих регістрів інкрементується в кожному машинному циклі, через кожні 12 періодів коливань кварцового резонатора.
У режимі лічильника вміст регістрів інкрементується у разі переходу з «1» в «0» зовнішнього вхідного сигналу, що подається на виводи мікроконтролера T0 або T1. Так як на розпізнавання такого переходу потрібні два машинних цикли, максимальна частота підрахунку вхідних сигналів дорівнює 1/24 частоти резонатора. Для гарантованого прочитання вхідний сигнал повинен утримувати значення «0» та «1», як мінімум, протягом одного машинного циклу мікроконтролера.
Таймер/лічильник ТС1 також використовується для встановлення швидкості передачі послідовного порту.
|
|
Структурні схеми таймерів/лічильників ТС0 і ТС1, за винятком одного режиму, ідентичні. Таймер/лічильники можуть включатися і виключатися як програмно, за допомогою біт керування TR0/TR1 (за умови GATE0/GATE1 = 0), так і апаратно, шляхом подачі керуючого сигналу на входи INT0/INT1 (за умови одночасного виконання GATE0/GATE1 = 1 та TR0/TR1 =1). Слід зазначити, що після включення і після скидання мікроконтролера роботу таймерів/лічильників.
Для роботи з цими таймерами/лічильниками використовуються два регістри керування TMOD та TCON.
На рис. 5.1 представлено бітову структуру регістру TMOD. Призначення окремих біт керування описано в табл. 5.1. Всі біти цього регістру доступні як для читання, так і для запису. При включенні мікроконтролера до регістру TMOD записується нульове значення.
GATE1 | C/T1 | M1 | M0 | GATE0 | C/T0 | M1 | M0 |
Рис.5.1
Таблиця 5.1.
Біт | Позиція | Призначення |
GATE1 | TMOD.7 | Управління включенням таймера ТС1. «1» – зовнішнє включення. Таймер працює якщо одночасно виконуються умови INT1 = 1 і TR1 = 1. «0» – програмний запуск. Таймер працює якщо TR1 = 1. |
C/ 1 | TMOD.6 | Біт вибору типу роботи для таймера TC1: «0» - працює як таймер; «1» - працює як лічильник. |
M1.1 | TMOD.5 | Визначення режиму роботи ТС1. |
M1.0 | TMOD.4 | Визначення режиму роботи ТС1. |
GATE0 | TMOD.3 | Управління включенням таймера ТС0. «1» – зовнішнє включення. Таймер працює якщо одночасно виконуються умови INT0 = 1 і TR0 = 1. «0» – програмний запуск. Таймер працює якщо TR0 = 1. |
C/ 0 | TMOD.2 | Біт вибору типу роботи для таймера TC0: «0» - працює як таймер; «1» - працює як лічильник. |
M0.1 | TMOD.1 | Визначення режиму роботи ТС0. |
M0.0 | TMOD.0 | Визначення режиму роботи ТС0. |
На рис. 5.2 представлено бітову структуру регістру TCON. У табл. 5.2 описано призначення окремих біт керування. Для контролю стану та керування режимами роботи таймерів/лічильників використовуються старші чотири біти цього регістру – TF1, TR1, TF0, TR0. Біти керування молодшої тетради відповідають за налаштування режимів роботи зовнішніх переривань по входам INT0 та INT1.
|
|
Всі біти цього регістру доступні як для читання, так і для запису. При включенні мікроконтролера до регістру TCON записується нульове значення.
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
Рис.5.2
Таблиця 5.2.
Біт | Позиція | Призначення |
TF1 | TCON.7 | Прапор переповнення таймера ТС1. Встановлюється при переповненні. Скидається при обслуговуванні переривання апаратно. |
TR1 | TCON.6 | Біт запуску/зупинки таймера ТС1. Встановлюється/скидається програмно. |
TF0 | TCON.5 | Прапор переповнення таймера ТС0. Встановлюється при переповненні. Скидається при обслуговуванні переривання апаратно. |
TR0 | TCON.4 | Біт запуску/зупинки таймера ТС0. Встановлюється/скидається програмно. |
IE1 | TCON.3 | Прапор зовнішнього переривання по входу INT1. Встановлюється апаратно відповідним сигналом на вході INT1.Скидається апаратно при обслуговуванні переривання, або програмно. |
IT1 | TCON.2 | Біт управління типом сигнала, що викликає переривання: IT1 = 0 – переривання по низькому рівню сигнала; IT1 = 1 – переривання по зрізу сигнала. Встановлюється/скидається програмно. |
IE0 | TCON.1 | Прапор зовнішнього переривання по входу INT0. Встановлюється апаратно відповідним сигналом на вході INT0.Скидається апаратно при обслуговуванні переривання, або програмно. |
IT0 | TCON.0 | Біт управління типом сигнала, що викликає переривання: IT1 = 0 – переривання по низькому рівню сигнала; IT1 = 1 – переривання по зрізу сигнала. Встановлюється/скидається програмно. |
Обидва таймера/лічильника можуть налаштовуватися для роботи в чотирьох режимах:
· режим 0 - 13-бітний таймер;
· режим 1 - 16-бітний таймер;
· режим 2 - 8-бітний автоперезавантажувальний таймер;
· режим 3 - таймер ТС0, як два роздільних 8-бітних таймера.
У табл. 5.3 приведено відповідність між станом біт керування М0.0, М0.1 (М1.0, М1.1) та режимами роботи таймерів/лічильників.
Таблиця 5.3
Режим | М1 | М0 | Опис режиму роботи |
13-бітний таймер/лічильник | |||
16-бітний таймер/лічильник | |||
8-бітний таймер/лічильник з автоперезавантажуванням | |||
ТС0, як два 8-бітних таймера/лічильник |