Послідовний інтерфейс
Універсальний асинхронний приймач-передавач (УАПП) забезпечує обмін інформації, поданої у послідовному коді (молодшими бітами вперед), в повному дуплексному режимі обміну. В склад УАПП (послідовний порт) входять приймаючі і передаючі зсуваючі регістри, а також спеціальний буферний регістр (SBUF). Запис байта в буфер приводить до автоматичного перезапису байта в зсуваючий регістр передавача і ініціюється початок передачі байта. Наявність буферного регістра приймача дозволяє суміщати операцію читання раніше прийнятого байта, з прийманням чергового байта. Послідовний порт може працювати в чотирьох режимах. Режим 0. В цьому режимі інформація передається і сприймається через зовнішній вивід входу приймача (RXD). Довжина посилки даних складає 8 біт. Через зовнішні виводу виходу передавача (TXD) видаються імпульси зсуву, що супроводжують кожен біт. Частота передачі біта інформації рівна 1/12 частоти резонатора. Режим 1. В цьому режимі передаються через TXD або приймаються через RXD 10 бітів інформації: старт-біт (0), 8 бітів даних і стоп-біт (1). Швидкість передачі/прийому – величина змінна і задається таймером. Режим 2. В цьому режимі через TXD передаються або із RXD приймаються 11 бітів інформації: старт-біт, 8 бітів даних програмований 9 біт і стоп-біт. При передачі дев’ятий біт даних може приймати значення 0 або1, або ознаку контролю за парністю (вміст індикатора паритету PSW.0). Частота обміну задається програмно і складає 1/32 або 1/64 частоти резонатора (визначається керуючим бітом SMOD). Режим 3. Цей режим співпадає з режимом 2, проте частота обміну задається таймером. Керування режимом роботи УАПП здійснюється через програмування спеціального регістра SCON. Функціональне призначення бітів цього регістра показане в таблиці 8.9.
Прикладна програма визначає режим роботи УАПП шляхом завантаження в старші біти регістра SCON 2-бітового коду. У всіх режимах роботи передача із УАПП ініціюється будь-якою командою, де буферний регістр SBUF є приймачем байта. Приймання інформації в УАПП в режимі 0 можливе за умови, що RI=0 i REN=1. В режимах 1,2,3 прийом починається з переходом старт-біта, якщо REN=1. Таблиця 8.9- Регістр керування/статуса УАПП
В біті ТВ8 програмно установлюється значення дев’ятого біта даних, який характерний для режиму 2 і 3. В біті RB8 фіксується в режимі 2 і 3 дев’ятий прийнятий біт даних. В режимі 1, якщо SM2=0, в біті RB8 заноситься стоп-біт. В режимі 0 біт RB8 не використовується.
Індикатор переривання передавача ТІ установлюється апаратно в кінці періоду передачі восьмого біта даних в режимі 0 і на початку періоду передачі стоп-біта в режимах 1,2,3. У підпрограмі обслуговування переривань необхідно обнулювати біт ТІ. Індикатор переривання приймача RI установлюється апаратно в кінці періоду приймання восьмого біта даних в режимі 0 і в середині періоду прийому стоп-біта в режимах 1,2,3. Підпрограма обслуговування переривань має скидати біт RI. Швидкість обміну УАПП в різних режимах роботи визначається різними способами. В режимі 0 частота передачі залежить тільки від резонансної частоти резонатора За один машинний цикл послідовний порт передає один біт інформації. В режимах 1,2,3 швидкість обміну залежить від керуючого біта SMOD в регістрі спеціальних функцій (регістр PCON). Призначення регістра PCON показане в таблиці 8.10. В режимі 2 частота передачі визначається виразом . Якщо SMOD=0 частота передачі рівна , а при SMOD=1 - . Таблиця 8.10- Регістр керування потужністю PCON
Зауваження. Обнуління вмісту PCON виконується шляхом завантаження в нього коду ****0000. В режимах 1 і 3 у формуванні частоти передачі крім керуючого біта SMOD приймає участь таймер 1. При цьому частота передачі залежить від частоти переповнення (OVT1) і визначається у такий спосіб: Переривання від таймера 1 в цьому випадку має бути заблоковане. Сам Т/Л1 може працювати і як таймер, і як лічильник подій в будь-якому з трьох режимів. Однак найвдалішим є використання режиму таймера з автозавантаженням (старша тетрада TMOD=0010 B). При цьому частота передачі визначається виразом: З особливостями роботи УАПП в різних режимах детально можна ознайомитись у спеціальній літературі [ ]. Система переривань Спрощена схема переривань МК51 подана на рисунку 8.8.
Рисунок 8.8- Схема переривань МК51
Зовнішні переривання і можуть викликатись рівнем 0 або переходом сигналу з 1 в 0 на входах МК в залежності від значень керуючих бітів ІТ0 і ІТ1 в регістрі ТCON. Від зовнішніх переривань установлюється індикатори ІЕ0 і ІЕ1 в регістрі ТCON, які ініціюють виклик відповідної програми обслуговування переривань. Обнуління цих індикаторів виконується апаратно лише тоді, коли переривання викликане за зрізом сигналу. Якщо ж переривання викликане рівнем вхідного сигналу, то скинути індикатор ІЕ можна у підпрограмі обслуговування переривань шляхом впливу на джерело переривань з метою скасування запиту. Індикатори запиту переривань від таймерів TFO i TF1 обнулюється автоматично при передачі керування підпрограмі обслуговування. Індикатори запиту переривання RI i TI установлюються блоком керування УАПП апаратно, але скидувати треба їх програмно. Переривання можуть ініціюватись і відмінятись програмно, оскільки всі перераховані індикатори програмно-доступні. В блоці регістрів спеціальних функцій є два регістри для керування режимами переривань і рівнями пріоритету (відповідно символьні імена ІЕ і ІР). Формати цих регістрів описані в таблицях 8.11 – 8.12. Можливість програмної установки бітів цих регістрів забезпечує гнучку систему переривань МК51. Таблиця 8.11- Регістр масок переривань ІЕ
Таблиця 8.12- Регістр пріоритетних переривань
Індикатори переривань опитуються в момент S5P2 кожного машинного циклу. Ранжування переривань за рівнем пріоритету виконується на наступному машинному циклі. Система переривань генерує апаратний виклик (LCALL) відповідної програми обслуговування, якщо вона не блокується однією з таких умов: 1) в даний момент обслуговується запит переривань рівного або вищого рівня пріоритету; 2) поточний машинний цикл – не останній в циклі виконання команди; 3) виконується команда RETI або інша команда, пов’язана зі зверненням до регістрів ІЕ або ІР. За апаратно-сформованим кодом LCALL система переривань розміщує в стеку тільки вміст лічильника команд РС і завантажує в нього адресу вектора підпрограми обслуговування. За адресою вектора має бути розміщена команда безумовного переходу (JMP) до початкової адреси підпрограми обслуговування переривань. Підпрограма обслуговування у випадку необхідності має починатись командами запису в стек (PUSH) регістра PSW, акумулятора, покажчика даних тощо і закінчуватись командами відновлення із стеку (РОР). Підпрограма обслуговування переривань має завершуватись командою RETI, за якою у лічильник команд завантажується зі стеку адреса повернення в основну програму.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|