
- •Тема 2.4. Робота системних таймерів. Механізм переривань мк mcs51. Послідовний порт uart.
- •Робота системних таймерів. Типи таймерів.
- •2. Регістр стану таймера і регістр керуючого слова. Програмування таймерів.
- •3. Механізм переривань мк mcs51.
- •4. Виконання підпрограми переривання
- •5. Послідовний порт мк 8051.
4. Виконання підпрограми переривання
Система переривань формує апаратний виклик (LCALL) відповідної підпрограми обслуговування, якщо вона не заблокована однією з наступних умов:
в даний момент обслуговується запит переривання рівного або високого рівня пріоритету;
поточний машинний цикл – не останній в циклі виконуваної команди;
виконується команда RETI або будь-яка команда, пов’язана зі зверненням до регістрів ІЕ або ІР.
Відмітимо, що якщо прапорець переривання був встановлений, але по одній з вище названих умов не отримав обслуговування і до моменту закінчення блокування вже скинутий, то запит переривання втрачається і ніде не запам’ятовується.
По апаратно сформованому коду LCALL система переривання поміщує в стек тільки вміст лічильника команд і завантажує в нього адресу вектора відповідної підпрограми обслуговування. По адресі вектора повинна бути розташована команда безумовної передачі управління (JMP) до початкової адреси підпрограми обслуговування переривання. У випадку необхідності вона повинна починатися командами запису в стек (PUSH) слова стану програми (PSW), акумулятора, покажчика даних і т.д. і повинна закінчуватись командою RETI, по якій в лічильник команд перезавантажується зі стека збережена адреса повернення в основну програму. Команда RET також повертає управління перерваній основній програмі, але при цьому не зніме блокування переривань, що призводить до необхідності мати програмний механізм аналізу закінчення процедури обслуговування даного переривання.
5. Послідовний порт мк 8051.
Через універсальний асинхронний прийомопередавач UART (Universal Asynchronous Receiver-Transmitter) здійснюється прийом і передавання інформації, представленої послідовним кодом (молодшими бітами вперед), в повному дуплексному режимі обміну. В склад прийомопередавача, що часто називають послідовним портом входять приймаючий і передаючий зсуваючи регістри, а також спеціальний буферний регістр (SBUF) прийомопередавача.
Крім того, роботою послідовного порта управляють два службових регістри – регістр управління/статусу прийомопередавача SCON, і регістр управління потужністю PCON.
Запис байту в буфер призводить до автоматичного перепису байту в зсувовий регістр прийомопередавача і ініціює початок передавання байту. Наявність буферного регістра дозволяє сумістити операцію читання раніше прийнятого байту з прийомом наступного. Але якщо до моменту закінчення прийому байту попередній не був зчитаний з SBUF, то він буде загублений.
Послідовний порт 8051 може працювати в чотирьох різних режимах:
Режим 0. Інформація і передається і приймається через вивід входу приймача (RXi TXi). Приймаються або передаються 8 біт даних. Через вивід виходу передавача (TXD) видаються імпульси зсуву, які супроводжують кожен біт. Частота передавання біту інформації дорівнює 1/2 частоти кварцового резонатора.
Режим 1. В цьому режимі передаються через вивід TXD або приймаються через RXD 10 біт інформації: старт-біт (0), 8 біт даних і стоп-біт (1) при прийомі інформації в біт RB8 регістра управління/статусу прийомопередавача SCON заносяться стоп-біт Швидкість прийому/передавання – величина змінна і задається таймером.
Режим 2. В цьому режимі через вивід TXD передаються або приймаються через RXD 11 біт інформації: старт-біт, 8 біт даних, програмований дев’ятий біт і стоп-біт. При передачі дев’ятий біт даних може приймати значення 0 або 1, або, наприклад, для підвищення вірогідності передачі шляхом контролю по парності в нього може бути поміщено значення ознаки паритету з слова стану програми (PSW.0). При прийомі дев’ятий біт даних поміщається в біт RB8 регістра SCON, а біт-стоп, на відміну від режиму 1, втрачається. Частота прийому/передавання вибирається програмою і може бути рівна або 1/32, або 1/64 частоти резонатора в залежності від управляючого бітуSMOD.
Режим 3. Співпадає з режимом 2 у всіх деталях, за винятком частоти прийому/передавання, що є величиною змінною і задається таймером.
У всіх випадках передача ініціалізується інструкцією, в якій дані поміщаються в SBUF. Прийом ініціалізується при виявленні переходу з 1 в 0 на вході приймача. При цьому в режимі 0 цей перехід повинен супроводжуватись виконанням умов R1=0 i REN=1, а для інших режимів - REN=1.
Регістр управління/статусу прийомопередавача SCON.
Управління режимом роботи прийомопередавача здійснюється через спеціальний регістр з назвою SCON. Цей регістр містить не тільки управляючі біти, що визначають режим роботи послідовного порта, але й дев’ятий біт даних що приймаються чи передаються (RB8 і TB8) і біти переривання прийомопередавача (R1 і Т1).
Прикладна програма шляхом завантаження в старші біти регістра SCON двохбітного коду визначає режим роботи прийомопередавача. В усіх чотирьох режимах роботи передача ініціалізується будь-якою командою, в якій буферний регістр SBUF вказаний як отримувач байту.
Призначення бітів регістра SCON
Біт |
Позначення |
Ім’я і призначення |
|||||||||||||||
SCON.7 |
SM0 |
Біти управління режимом роботи прийомопередавача. Встановлюються/скидаються програмно.
|
|||||||||||||||
SCON.6 |
SM1 |
||||||||||||||||
SCON.5 |
SM2 |
Біт управління режимом прийомопередавача. Встановлюється програмно для заборони прийому повідомлення, в якому дев’ятий біт має значення 0 |
|||||||||||||||
SCON.4 |
REN |
Біт дозволу прийому. Встановлюється/скидається програмно для дозволу/заборони прийому послідовних даних. |
|||||||||||||||
SCON.3 |
TB8 |
Передача біту 8. Встановлюється/скидається програмно для задання дев’ятого біту, що передається, в режимі 9-бітового передавача. |
|||||||||||||||
SCON.2 |
RB8 |
Прийом біту 8. Встановлюється/скидається апаратно для фіксації дев’ятого біту, що приймається, в режимі 9-бітового передавача. |
|||||||||||||||
SCON.1 |
TI |
Прапорець переривання передавача. Встановлюється апаратно при закінченні передачі байту. Скидається програмно після обслуговування переривання. |
|||||||||||||||
SCON.0 |
RI |
Прапорець переривання приймача. Встановлюється апаратно при прийомі байту. Скидається програмно після обслуговування переривання. |
Швидкість прийому/передачі інформації через послідовний порт.
Швидкість прийому/передачі, тобто частота роботи прийомопередавача в різних режимах, визначається різними способами.
В режимі 0 частота передачі
залежить тільки від резонансної частоти
кварцового резонатора
:
.
За один машинний цикл послідовний порт
передає 1 біт інформації. В режимах 1, 2
і 3 швидкість прийому/передавання
залежить від значення управляючого
біта SMOD в
регістрі спеціальних функцій PCON.
Призначення бітів регістра управління потужністю PCON.
Біт |
Позначення |
Назва і призначення |
PCON.7 |
SMOD |
Подвоєна швидкість передачі. Якщо біт встановлений в 1, то швидкість передачі в 2 рази більша, ніж при SMOD=0. |
PCON.6 |
|
Не використовуються. |
PCON.5 |
||
PCON.4 |
||
PCON.3 |
GF1 |
Прапорці, що специфікуються користувачем (прапорці загального призначення) |
PCON.2 |
GF0 |
|
PCON.1 |
PD |
Біт зниженої потужності. При встановленні біту в 1 мікроЕОМ переходить ів режим зниженого енергоспоживання |
PCON.0 |
IDL |
Біт холостого ходу. Якщо біт встановлено в 1, то мікроЕОМ переходить в режим холостого ходу. |
Примітка. При одночасному записі 1 в PD і IDL біт PD має перевагу. Скидання вмісту PCON виконується шляхом завантаження в нього коду 0ххх0000.
В режимі 2 частота передавання визначається виразом:
.
Іншими словами, при SMOD=0
частота передавання дорівнює 1/64 частоти
fрез.
В режимах 1 і 3 в формуванні
частоти передавання, крім управляючого
біту SMOD,
приймає участь таймер 1. При цьому частота
передавання f
залежить від частоти
переповнення fOVLT
і визначається
наступним чином:
.
Переривання від таймера 1 в цьому випадку
повинно бути заблоковане. Сам же таймер
може працювати як в режимі таймера, так
і в режимі лічильника. Номер режиму (0,
1, 2) ролі не грає. Найбільш типове
використання його в режимі таймера з
автоперезавантаженням (старша тетрада
TMOD=0010В). При
цьому частота передавання визначається
виразом:
.
Частота прийому/передачі (Baud Rate) |
Частота резонатора, МГц |
Таймер/лічильник 1 |
|||
SMOD |
C/T |
Режим (MODE) |
Число що перезавантажується |
||
Режим 0, макс.: 1МГц |
12 |
Х |
Х |
Х |
Х |
Режим 2, Макс.: 375 КГц |
12 |
1 |
Х |
Х |
Х |
Режим 1, 3: 62,2 КГц |
12 |
1 |
0 |
2 |
0FFH |
19,2 КГц |
11,059 |
1 |
0 |
2 |
0FDH |
9,6 КГц |
11,059 |
0 |
0 |
2 |
0FDH |
4,8 КГц |
11,059 |
0 |
0 |
2 |
0FАH |
2,4 КГц |
11,059 |
0 |
0 |
2 |
0F4H |
1,2 КГц |
11,059 |
0 |
0 |
2 |
0F4H |
137,5 Гц |
11,059 |
0 |
0 |
2 |
1DH |
110 Гц |
6 |
0 |
0 |
2 |
72Н |
110 Гц |
12 |
0 |
0 |
1 |
0FЕЕВH |
Відмітимо, що швидкості прийому і передавання можуть відрізнятись. Гранично низьких частот прийомопередачі можна досягнути при використанні таймера в режимі 1 (16-бітного таймера) і дозволі переривань від таймера (старша тетрада TMOD=0001B). Перезавантаження 16-бітного таймера повинно здійснюватись програмним чином.