
- •Розділ 5 інтерфейс пристроїв введення-виведення
- •5.1. Функції інтерфейсу введення-виведення
- •5.2. Програмований паралельний інтерфейс
- •5.3. Програмований інтерфейс клавіатури та індикації
- •5.4. Програмований таймер
- •5.5. Архітектура і функціональні можливості контролера прямого доступу до пам'яті
- •5.6. Програмований послідовний інтерфейс
- •5.7. Програмований контролер переривань
- •5.8. Приклад розробки мікропроцесорної системи
5.4. Програмований таймер
Програмований таймер (ПТ) КР1810ВИ54 призначений для організації роботи МП систем та формування сигналів з різними часовими і частотними характеристиками. Структурну схему ВІС зображено на рис. 5.34, а умовне позначення — на рис. 5.35.
Схема таймера містить блок керування читанням-записом RWCU з регістром працювати у двійковому або двійково-десятковому коді. Максимальна частота лічильника становить 2 МГц для таймера КР580ВИ53 та 5МГц для, таймера КР1810ВИ54
У табл. 5.6 наведено призначення виводів ПТ КР580ВИ54.
Рис. 5.34. Структурна схема ВІС таймера КР580ВИ54:
CLK — входи тактових (лічильних) імпульсів; GATE — входи дозволу
лічення (залежить від режиму роботи каналу); OUT — виходи лічильника
Рис. 5.35. Умовне позначення ВІС таймера КР580ВИ54
Розряди ЛІ, АО (див. рис. 5.34) обирають звернення до лічильників або до регістра керуючого слова RCW:
А1 |
А2 |
Звернення |
0 |
0 |
СТ0 |
0 |
1 |
СТ1 |
1 |
0 |
СТ2 |
1 |
1 |
RCW |
Сигнали керування роботою ВІС WR, RD, CS подаються на блок RWCU і разом з адресними розрядами А0, А1задають вид виконуваної операції згідно з табл. 5.7.
Узагальнену схему під'єднання
програмованого таймера до шин
мікропроцесора зображено на рис. 5.36.
Наприклад, на адресні лінії А1,
АО можна під'єднати
лінії А2,
А1 шини
адрес, а на вхід
подати сигнал з виходу
дешифратора (див. рис. 5.9 або рис. 5.19).
Таблиця 5.6. Призначення виводів ВІС таймера КР580ВИ54
Позначення |
Номер виводу |
Призначення виводів |
D7-D0 |
1-8 |
Мультиплексована шина даних (DB), по якій з розподілом у часі передаються дані |
|
21 |
Вибірка кристалу; за = 0 робота ВІС дозволяється |
|
22 |
Читання. Сигнал RD = 0 налагоджує вхідний буфер на виведення, за якого програмований таймер видає інформацію у МП |
|
23 |
Запис. Сигнал WR - 0 налагоджує вхідний буфер на введення, за якого програмований таймер приймає інформацію від МП |
А0, А1 |
19; 20 |
Адресні входи, за якими відбувається адресація до одного з трьох каналів таймера |
CLK2- CLK0 |
9; 15; 18 |
Вхід тактових сигналів для керування лічильником-таймером. Зріз сигналу на вході CLK призводить до зменшення вмісту лічильника таймера на одиницю |
САТЕ2- GATE0 |
11; 14; 16 |
Входи дозволу лічби |
OUT2-OUT0 |
10; 13; 17 |
Виходи лічильника-таймера |
Таблиця 5.7. Вид операції програмованого таймера залежно від сигналів керування та адресних розрядів
Операція |
Сигнали керування |
||||
|
|
|
А0 |
А1 |
|
Запис керуючого слова в RCW Завантаження СТ0 СТ1 СТ2 Читання СТ0 СТ1 СТ2 Від'єднання програмованого таймера від шини |
0
0 0 0
1 1 1 1 |
1
1 1 1
0 0 0 1 |
0
0 0 0
0 0 0 0 |
1
0 0 1
0 0 1 х |
1
0 1 0
0 1 0 х |
Примітка, х — будь-яке значення (0 або 1).
Рис. 5.36. Під'єднання програмованого таймера до шин мікропроцесора
-
D7
D6
D5
D4
D3
D2
D1
D0
CNT1
CNT0
RW1
RW0
M2
M1
M0
K
Рис. 5.37. Формат керуючого слова програмованого таймера
Установлення режиму роботи кожного каналу програмованого таймера здійснюється програмно — записуванням керуючого слова (рис. 5.37) і початкового вмісту лічильника.
За значеннями розрядів D7 (СNT1) та D6 (CNT0) вибирають лічильник (табл. 5.8).
За значеннями розрядів D5 (RW1) та D4 (RW2) вибирають спосіб читання-запису (табл. 5.9).
За значеннями розрядів D3 —D1 (M2—M0) вибирають один з шести режимів роботи лічильника (табл. 5.10).
Таблиця 5.8. Вибирання лічильника
Розряд |
Лічильник
|
|
D7 |
D6 |
|
0 |
0 |
СТ0 |
0 |
1 |
СТ1 |
1 |
0 |
СТ2 |
1 |
1 |
Заборонена комбінація для таймера КР580ВИ53 та команда читання слову стану для таймера КР1810ВИ54 |
Таблиця 5.9. Спосіб читання-запису
Розряд |
Спосіб читання-запису
|
|
D5 |
D4 |
|
0 |
0 |
Читання вмісту лічильника |
0 |
1 |
Запис лише молодшого байта |
1 |
0 |
Запис лише старшого байта |
1 |
1 |
Запис молодшого, а потім старшого байтів |
Таблиця 5.10. Режими роботи програмованого таймера
М2 |
М1 |
М0 |
Режим |
М2 |
М1 |
М0о |
Режим |
0 |
0 |
0 |
0 |
x |
1 |
1 |
3 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
4 |
x |
1 |
0 |
2 |
1 |
0 |
1 |
5 |
Розряд D0 (K) визначає спосіб кодування:
• D0 = 0 — двійковий лічильник;
• D0 = 1 — двійково-десятковий лічильник.
Приклад 5.12. Запрограмувати лічильник 0 в режим 1. Адреса лічильника 0 — 10Я, регістра керуючого слова — 16Я. Визначимо керуюче слово: 0011 0010 = 32Я Програма матиме такий вигляд:
МOV AL, 32H OUT 16H,AL MOV AL, «молодший байт» OUT 10Н, AL MOV AL, «старший байт» OUT 10H, AL |
Формування керуючого слова Виведення в RCW Завантаження молодшого байта коду Попереднє встановлення Завантаження старшого байта коду Попереднє встановлення |
Порядок програмування каналів таймера надзвичайно гнучкий. Можна записати керуючі слова режимів у всі канали, а потім у довільному порядку завантажувати коди попереднього встановлення, а можна запрограмувати окремо кожний канал (як у прикладі 5.12).
У процесі роботи програмованого таймера вміст будь-якого з лічильників можна прочитати двома способами:
призупинити роботу лічильника надходженням сигналу GATE - 0 або блокуванням тактових імпульсів, а потім прочитати вміст лічильника, починаючи з молодшого байта, за допомогою двох команд введення. Перша команда введення прочитає молодший байт, друга — старший;
записати у програмований таймер керуюче слово, що містить нулі в розрядах D4, D5 (нулі в цих розрядах указують на виконання операції «замкнення» вмісту лічильника у вихідному регістрі каналу в момент запису керуючого слова). Потім прочитати вміст лічильника за допомогою команд введення.
Приклад 5.13. Прочитати вміст лічильника СТО і записати його у регістр ВХ.
Візьмемо адреси таймера такі, як у прикладі 5.12. Запрограмувати лічильник 0 у режимі 1.
Визначимо керуюче слово для фіксації вмісту лічильника:
0000 00102 = 02H
Програма буде така:
MOVAL,02H OUT 16H, AL IN AL, 10Н MOV BL, AL INAL, 10Н MOV BH, AL |
Формування керуючого слова Виведення в RCW Читання молодшого байта Пересилання молодшого байта у BL Читання старшого байта Пересилання старшого байта у ВН |
Отже, після виконання програми у ВХ буде вміст лічильника на момент його читання, а лічильник продовжуватиме лічення.
Крім того, у ВІС К1810ВИ54 можна прочитати слова стану лічильника. Для цього треба записати керуюче слово (рис. 5.38):
-
D7
D6
D5
D4
D3
D2
D1
D0
1
0
COUNT
STAT
CT2
CT1
CT0
0
Рис. 5.38. Керуюче слово ВІС К1810ВИ54: СТ0, СТ1, СТ2 — вибір лічильника
Лічильник вибирається для запису одиниці у відповідний двійковий розряд. Значення STAT = 0 вказує на те, що буде прочитано слово стану каналу, зазначеного в розрядах D3 — D1. Значення COUNT = 0 свідчить про те, що буде запам'ятовано вміст лічильників, зазначених у розрядах D3—D1 та вихідних регістрах каналів.
Слово стану каналу має вигляд, показаний на рис. 5.39.
-
D7
D6
D5
D4
D3
D2
D1
D0
OUT
FN
RW1
RW0
M2
M1
M0
K
Рис. 5.39. Вигляд слова стану каналу:
OUT — стан виходу OUT (0,1); FN — прапорець перевантаження (FN = 1, якщо було перезавантаження коду переднього встановлення); RW1, RW0, М2, M1, M0, К — розряди (дублюють розряди керуючого слова, див. рис. 5.38)
Під час запису керуючого слова в лічильник завантажується спочатку молодший, а потім старший байт коду переднього встановлення. Надалі робота таймера залежить від обраного режиму роботи.
Режими роботи таймера. Лічильники таймера можуть працювати у таких шести режимах: 0 — програмована затримка; 1 — програмований мультивібратор; 2 — програмований генератор тактових імпульсів; 3 — генератор прямокутних сигналів; 4 — програмно-керований строб; 5 — апаратно-керований строб. Вплив сигналу GATE на відповідний лічильник залежить від режиму роботи.
Рис. 5.40. Режим програмованої затримки
Режим 0. Програмована затримка. У цьому режимі (рис. 5.40) на виході вибраного каналу таймера формується сигнал Я-рівня з програмно-керованою затримкою. Затримка відлічується від заднього фронту першого імпульсу CLK після запису молодшого байта коду перестановки константи. Після запису керуючого слова на виході OUT вибраного каналу таймера встановлюється сигнал L-рівня. Такий самий стан зберігається під час запису молодшого байта константи. Якщо під час лічення GATE = 0, то лічення припиняється, а з появою GATE = 1 — відновлюється з перерваного значення. Після закінчення лічення на виході OUT встановлюється сигнал Я-рівня. Завантаження у лічильник нового значення молодшого байта у процесі лічення його припиняє, а після завантаження старшого байта починається новий цикл лічення.
Режим 1. Програмований мультивібратор. На виході лічильника формується імпульс L -рівня з програм-но-керованою тривалістю, причому точкою початку відліку є задній фронт першого імпульсу CLK після появи сигналу GATE (рис. 5.41).
Якщо значення сигналу GATE = 1, на виході OUT формується імпульс L-рівня тривалістю N періодів тактових імпульсів CLK. Завантаження у процесі лічення нового значення N поточного режиму лічення не змінює.
Мультивібратор автоматично перезапускається після кожного переднього фронту сигналу GATE.
Режим 2. Програмований генератор тактових імпульсів. У цьому режимі (рис. 5.42) обраний канал здійснює розподіл частоти імпульсів CLK на програмно-керований коефіцієнт N, тобто програмований таймер генерує періодичний сигнал з частотою у N разів меншою, ніж частота тактових імпульсів CLK.
Рис. 5.41. Режим програмованого мультивібратора
Рис. 5.42. Режим програмованого генератора тактових імпульсів
Вихідний сигнал L-рівня встановлюється на останньому такті періоду. Завантаження лічильника новим значенням N у процесі лічби призводить до зміни розміру періоду. Сигнал GATE можна використовувати для зовнішньої синхронізації програмованого таймера, оскільки значення GATE = 0 забороняє лічення, встановлюючи значення сигналу OUT = 1, а значення GATE = 1 починає лічення спочатку.
Режим 3- Генератор прямокутних імпульсів. Обраний канал формує прямокутні імпульси з програмно-керованим періодом. Дія сигналу GATE аналогічна режиму 0. За парного значення N на виході лічильника генерується сигнал Я-рівня впродовж першої половини періоду і сигнал L-рівня впродовж другої половини. У разі непарного N тривалість сигналу H-рівня на один такт більша, ніж для сигналу L-рівня. У режимі 3 число N = 3 завантажувати у лічильник не дозволяється. Часові діаграми для цього режиму зображено на рис. 5.43.
Рис. 5.43. Режим генератора прямокутних імпульсів
Рис. 5.44. Діаграми роботи таймера:
а - для таймера КР580ВИ53; б - для таймера КР1810ВИ54
Режим 4. Програмовано-керований строб. У цьому режимі на виході лічильника формується строб L-рівня тривалістю TCLK з програмно-керованою затримкою щодо моменту запису молодшого байта команди. Перезавантаження молодшого байта у процесі лічби не впливає на поточне лічення, а завантаження старшого байта починає новий цикл лічення.
Режим 5. Апаратно-керований строб. Цей режим аналогічний режиму 4. Його відмінність від режиму 4 полягає в тому, що початком відліку програмно-керованої затримки є передній фронт сигналу GATE. Запуск лічильника здійснюється переднім фронтом сигналу GATE. Завантаження у лічильник нового значення N у процесі лічення не впливає на тривалість поточного циклу, але такий цикл відповідатиме новому значенню N.
Діаграми роботи таймера, що ілюструють дію сигналу GATE, зображено на рис. 5.44, а для таймера КР580ВИ53 і таймера КР1810ВИ54 - на рис. 5.44, б. Для таймера КР580ВИ53 з появою L-рівня сигналу GATE лічення припиняється, а з появою Я-рівня — відновлюється з перерваного значення. Для таймера КР1810ВИ54 з появою L-рівня сигналу GATE лічення також припиняється, а з появою H-рівня — починається зі значення коду попереднього встановлення.
Приклад 5.14. Запрограмувати
лічильник СТ0
у режим генератора
прямокутних імпульсів для отримання
частоти
.
Візьмемо адреси таймера такі, як у прикладі 5.12. Для отримання послідовності імпульсів 1 кГц підключимо до виводу G0 сигнал H-рівня, а на вивід CLK0 — тактові імпульси з частотою 5 МГц.
Знаходимо значення коефіцієнта ділення:
.
Згідно з рис. 5.43 визначимо керуюче слово для програмування лічильника СТ0 у режимі 3, з двійково-десятковим засобом кодування:
00 11 011 12 =37H
Тоді програма буде така:
MOV OUT MOV OUT MOV OUT |
AL, 37H 16H, AL AL, 00 10H, AL AL,50H 10H, AL |
Програмування таймера Запис молодшого байта 00 попереднього встановлення Запис старшого байта ; попереднього встановлення |
Після виконання програми на виводі OUT0 прямокутні імпульси з частотою 1 кГц триватимуть доти, доки не буде перепрограмовано таймер або вимкнено джерело живлення таймера.