Управління таймер-лічильниками (Т /С)
Для керування режимами роботи Т /С та організації взаємодії таймерів з системою переривань використовують два РСФ: rn - Register режимів - TMOD - від англійського "Timer MODe"; rn - регістр керування /стану - TCON - від "Timer CONtrol" rn Шляхом запису числових кодів в ці регістри таймери Т0 і Т1 можуть бути незалежно налаштовані на різні режими роботи. rn Структура регістрів TMOD і TCON і призначення бітів rn Кожен з таймерів Т/С0 і Т/С1 може функціонувати у будь-який з чотирьох конфігурацій - конфігураціях 0,1,2,3. Конфігурації 0,1,2 однакові для Т/С0 і T/С1. Конфігурація 3 реалізується в Т/С0 і Т/С1 по-різному. Структура регістра TMOD показана на ріс.14.1, а структура регістра керування роботою таймерів TCON - на ріс.14.2. rn rn Рис. 14.1. Бітів структура регістра TMOD rn Регістр TMOD не є бітів-адресуемим. Потрібна завантаження байт коду! rn rn Ріс.14.2. Бітів структура регістра TCON rn TCON є регістром з побітовой адресацією, а наведені на схемі імена біт представляють собою Зарезервовані символічні імена Асемблер. Скидання та встановлення окремих біт можуть проводитися незалежно, що забезпечує ефективне управління роботою таймерів. rn Далі індекс " х " будемо використовувати для узагальненого позначення номеру таймера-лічильника: 0 або 1. rn Т а б л и ц а 14.1 rn Призначення бітів регістра режимів TMOD rn rn rn rn rn Символ rn | rn rn Позиція rn | rn rn Призначення rn | rn rn rn rn GATE rn | rn rn TMOD.7 (1) rn TMOD.3 (0) rn | rn rn Дозвіл зупинки від переривання. rn При GATE = 1 Т /сх запускається і працює, якщо біт TRх = 1 і на вході ІNTх - рівень "1". При виникненні сигналу INTx = 0 Т /сх зупиняється незалежно від значення TRx. rn При GATE = 0 Т /сх запускається тільки установкою TRх = 1 і зупиняється при TRx = 0. rn | rn rn rn rn С /T rn | rn rn TMOD.6 (1) rn TMOD.2 (0) rn | rn rn Вибір режиму - таймер або лічильник. rn 0 - режим таймера, rn 1 - режим лічильника імпульсів по входу ТХ. rn | rn rn rn rn Продовження на наступній сторінці rn | rn rn rn rn М1 rn М0 rn | rn rn TMOD.5 (1) rn TMOD.1 (0) rn TMOD.4 (1) rn TMOD.0 (0) rn | rn rn Завдання конфігурації (0,1,2,3) таймерних регістрів для кожного Т /С окремо rn rn rn rn rn М1 rn | rn rn M0 rn | rn rn Опис режиму роботи rn | rn rn rn rn 0 rn | rn rn 0 rn | rn rn ТНх-восьміразрядний лічильник з предделітелем частоти на 32, реалізованим на молодшої частини - регістрі TLx rn | rn rn rn rn 0 rn | rn rn 1 rn | rn rn 16-розрядний таймер або лічильник rn | rn rn rn rn 1 rn | rn rn 0 rn | rn rn TLx працює як восьміразрядний Т /С з автоперезагрузкой. Стартове число підрахунку задається (і міститься) в ТНх. rn | rn rn rn rn 1 rn | rn rn 1 rn | rn rn TL0 і TH0 - восьміразрядние Т /С, які управляються битами таймерів 0 і 1 відповідно. Таймер 1 - вимикається. rn | rn rn rn rn | rn rn rn rn Т а б л и ц а 14.2 rn Призначення бітів регістра управління TCON rn rn rn rn rn Ім'я біти rn | rn rn Позиція rn | rn rn Призначення rn | rn rn rn rn TF1 rn | rn rn TCON.7 rn | rn rn Прапор переповнення таймера 1. Встановлюється апаратно при переповнення Т/С1. Скидається при обслуговуванні переривання апаратно. rn | rn rn rn rn TR1 rn | rn rn TCON.6 rn | rn rn Біт управління запуском таймера 1. Встановлюється і скидається програмно для запуску і зупинки Т/С1 ( "програмний вимикач") rn | rn rn rn rn TF0 rn TR0 rn | rn rn TCON.5 rn TCON.4 rn | rn rn Те ж саме, як і для TF1, для таймера Т0 rn Те ж саме, як і для TR1, для таймера Т0 rn | rn rn rn rn IE1 rn | rn rn TCON.3 rn | rn rn Прапор запиту зовнішнього переривання 1. Встановлюється апаратно при виявленні запиту зовнішнього переривання по входу INT1. Скидання залежить від значення біта IT1 rn | rn rn rn rn IT1 rn | rn rn TCON.2 rn | rn rn Біт управління типом сигналу переривання 1. rn модифікується програмно для задачі правила rn сприйняття сигналу INT1: rn при IT1 = 1 - за зріз (перехід "1" -> "0"); скидання IE1 виконується апаратно, rn при IT1 = 0 - за низького рівня на вході INT1; скидання IE1 може виконуватися програмно rn | rn rn rn rn IE0 rn IT0 rn | rn rn TCON.1 rn TCON.0 rn | rn rn Те ж, як і для IE1, по сигналу INT0 rn Те ж, як і для IT1, по сигналу INT0 rn | rn rn rn rn Наприклад, потрібно налаштувати таймер-лічильник 1 на запуск лише від біта TR1 в конфігурації 2, а для таймера-лічильника 0 управління запуском може виконуватися від TR0 і сигналу переривання INT0 в конфігурації 1. Таймер-лічильник 1 повинен функціонувати в режимі таймірованія, а таймер-лічильник 0 - у режимі лічильника зовнішніх імпульсів. Код налаштування таймерів формуємо у вигляді: rn init_timers equ 00101101B rn Настройка таймерів на потрібний режим здійснюється командою rn MOV TMOD, # init_timers rn Приклади програмного управління таймером: rn SETB TR1; запуск таймера 1 rn CLR TR0; останов таймер 0 rn Управління запуском від сигналів TRx, INT і GATE ілюструється схемою на мал. 14.3. rn rn Рис. 14.3. Управління запуском таймер від сигналів TRx, INT і GATE.
|