Микропроцессоры и микроконтроллеры

 
 
 
«Maybe 'just one little global variable' isn't too unmanageable, but that style leads to code that is useless except to its original programmer»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципи програмування MSC-51 :: Опис варіантів конфігурації таймерів-лічильників

Опис варіантів конфігурації таймерів-лічильників

Фактично робота визначається конфігурацією лічильних регістрів. Управління запуском і зупинкою таймерів здійснюється відповідно логікою сприйняття значень розрядів TRx, GATE та сигналу INTx. (див. ріс.14.3) і є однаковим для всіх типів конфігурації. Для всіх режимів однаковим є також вибір джерела імпульсів, які підраховуються, через встановлення значення розрядів С /Т (регістр TMOD). При переповнення лічильних регістрів (перехід зі стану "1 ... 1" до стану "0 ... 0") встановлюється відповідний прапор переривання (TF0 або TF1), що є сигналом для процесора МК51 про завершення чергового циклу підрахунку. Після видачі сигналу переривання таймер продовжує підрахунок імпульсів у відповідності з встановленим режимом. Дії, які повинні виконуватися при переповнення таймера, залежать від завдання і визначаються програмістом.

rn

Конфігурація 0 (M1 = 0, М0 = 0) - Register THх працює як восьміразрядній Т /С, на вхід якого підключений пятіразрядній лічильник-дільник з коефіцієнтом 32, реалізований на TLх. Схема таймера-лічильника в режимі 0 показана на ріс.14.4-а (мал. 26-а в комплекті). Таймерний регістр має довжину 13 біт (TLx = 5, THx = 8).

rn

Конфігурація 1 (M1 = 0, M0 = 1) - Т /С реалізований на основі 16-розрядної таймерного регістру TLx: THx. По суті, робота така ж, як і в конфігурації 0, але дільник на TLx має розрядність 8 і коефіцієнт 256. Максимальна кількість імпульсів, що може бути підраховано в цьому режимі, - 65536, вимірювань інтервал часу до 65 мс з точністю 1 мкс.

rn

Конфігурація 2 (M1 = 1, M0 = 0) - TLx є восьміразряднім лічильних регістром. Переповнення регістра TLx викликає генерацію прапора переривання TFx і автоматичне завантаження в TLx стартового числа, яке попередньо може бути записано в регістр Тнх. Схема таймера для конфігурації 2 показана на ріс.14.4-б (мал. 26-б в комплекті). Таймер-лічильник у конфігурації 2 має сенс використовувати для реалізації повторяющихся інтервалів часу однакової тривалості. Одним з стандартних застосувань Т/С1 в цій конфігурації є завдання швидкості передачі інформації через послідовний порт. При цьому сигнал переповнення TF1 є стробом передачі чергового біта (ріс.13.1).

rn

Конфігурація 3 (M1 = 1, M0 = 1) - Т/С1 не працює і зберігає своє вміст незмінним. Схема Т/С0 в конфігурації 3 показана на ріс.14.5 (мал. 27 в комплекті). Регістри TL0 і ТН0 функціонують як два незалежних восьміразрядних таймера. Управління роботою TL0 здійснюється битами С /Т, GATE і TR0 таймер 0, а також сигналом INT0. При переповнення таймера TL0 формується прапор переповнення TF0. Таймер ТН0 може працювати тільки як лічильник МЦ із запуском від TR1 і формуванням прапора TF1. Якщо Т/С0 використовується в конфігурації 3, то Т/С1 може застосовуватися за призначенням, яке не вимагає явної обробки переривань, наприклад, для синхронізації послідовного порту.

rn

rn

Рис. 14.4

rn
rn
Особенності реалізації тимчасових інтервалов
rn
Рис. 14.5