- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •1 Основи теорії мікропроцесорних пристроїв
- •Класифікація мікропроцесорів. Варіанти архітектури
- •Базова структура мікропроцесорної системи
- •Основні характеристики мп
- •Типова структура мікропроцесора
- •Система команд мп і режими адресації
- •Організація передачі інформації в мпс. Інтерфейс
- •1.6.1 Способи передачі інформації
- •Методи обміну інформацією в мікропроцесорній системі
- •2 Мікроконтролери
- •Структура мк
- •Процесорне ядро мк
- •Резидентна пам'ять мк
- •Порти уведення/виводу
- •Таймери і процесори подій
- •Аналогово-цифрові й цифро-аналогові перетворювачі
- •Мінімізація споживання енергії в мп-системах
- •Моніторинг напруги живлення мк
- •Апаратні і програмні рішення по підвищенню надійності роботи мк
- •Контролери Intel mcs-51
- •3.1 Структурна організація Intel 8051
- •3.1.1 Арифметично-логічний пристрій
- •Зовнішня пам'ять
- •Пристрій керування і синхронізації
- •Програмна модель омк
- •Система команд Intel 8051
- •Арифметичні операції:
- •Логічні команди:
- •Бітові команди:
- •Периферійні присторої омк
- •Порти введення/виводу
- •Звертання до портів можливе тільки за прямою адресою.
- •Лічильники/таймери
- •Послідовний порт
- •Примітка
- •Мікроконтролер pic16f877
- •Характеристика мікроконтролера
- •Cтруктурна схема мікроконтролера pic16f877
- •Організація пам'яті
- •Пам’ять програм
- •Організація пам'яті даних
- •Регістр стану status
- •Лічильник команд
- •Порти введення/виводу
- •Регістри portа і trisa
- •Регістри portb і trisb
- •Регістри portc і trisc
- •Регістри portd і trisd
- •Регістри porte і trise
- •Таймери
- •Модуль таймера tmr0
- •Модуль таймера tmr1
- •Модуль таймера tmr2
- •Модуль 10-розрядного ацп
- •Adcon0 (адреса 1Fh)
- •Adcon1 (адреса 9Fh)
- •Переривання
- •Сторожовий таймер wdt
- •Біти конфігурації
- •Слово конфігурації (адреса 2007h)
- •Система команд
- •Література
Лічильник команд
13-розрядний регістр лічильника команд РС указує адресу виконуваної інструкції. Молодший байт лічильника команд PCL доступний для читання і запису. Старший байт РСН, що містить <12:8> біти лічильника команд РС, не доступний для читання і запису. Усі операції з регістром РСН відбуваються через додатковий регістр PCLATH. При будь-якому виді скидання мікроконтролера лічильник команд РС очищається. На рисунку 4.5 показано дві ситуації завантаження значення в лічильник команд РС. Приклад зверху: запис в лічильник команд РС відбувається при записі значення в регістр PCL (PCLATH <4:0> —> РСН). Приклад знизу: запис значення в лічильник команд РС відбувається при виконанні команди CALL або GOTO (PCLATH <4:3> -» РСН).
Обчислюваний перехід може бути виконаний командою приросту до регістра PCL (наприклад, ADDWF PCL). При виконанні табличного читання обчислюваним переходом слід піклуватися про те, щоб значення PCL не перетнуло межу блоку пам'яті (кожен блок – 256 байтів).
Усі мікроконтролери PIC16F87X здатні адресувати 8 К слів пам'яті програм. Інструкції переходів (CALL і GOTO) мають 11-разрядне поле для вказівки адреси, що дозволяє безпосередньо адресувати 2 К слів пам'яті програм. Для адресації верхніх сторінок пам'яті програм використовуються 2 біта в регістрі PCLATH<4:3>. Перед виконанням команди переходу (CALL або GOTO) необхідно запрограмувати біти регістра PCLATH<4:3> для адресації необхідної сторінки.
Рисунок 4.5 – Приклади завантаження лічильника команд
При виконанні інструкцій повернення з підпрограми 13-розрядне значення для лічильника програм РС береться з вершини стека, тому маніпуляція бітами регістра PCLATH<3:4> не потрібна.
Примітка. Уміст регістра PCLATH не змінюється після виконання інструкції RETURN або RETFIE. Користувач має сам змінити значення регістра PCLATH для подальшого виконання команд GOTO і CALL.
Стік
PIC16F87X мають 8-рівневий 13-розрядний апаратний стік. Стік не має відображення на пам'ять програм і пам'ять даних, не можна записати або прочитати дані зі стека. Значення лічильника команд заноситься у вершину стека при виконанні інструкцій переходу на підпрограму (CALL) або обробки переривань. Читання зі стека і запис в лічильник команд РС відбувається при виконанні інструкцій повернення з підпрограми або обробки переривань (RETURN, RETLW, RETFIE), при цьому значення регістра PCLATH не змінюється.
Стек працює як циклічний буфер. Після 8 записів в стек, дев'ятий запис запишеться на місце першого, а десятий запис замінить другий і так далі.
Примітки:
У мікроконтролерах не існує ніяких покажчиків про переповнювання стека.
У мікроконтролерах не передбачено команд запису/читання із стека, окрім команд виклику/повернення з підпрограм (CALL, RETURN, RETLW і RETFIE) або умов переходу за вектором переривань.
Порти введення/виводу
Регістри введення/виводу можуть керуватися як будь-які інші регістри. Проте команда «читання» (наприклад, MOVF 6,W) завжди прочитує фактичний рівень сигналу на виводі порту, незалежно від того, запрограмований цей розряд порту на введення або на вивід. Після сигналу
«Скидання» всі порти введення/виводу встановлюються на «введення» (електрично еквівалентно третьому стану), а регістри керування введенням/виводом (TRISA, TRISB, TRISC, TRISD, TRISE) встановлюються в одиниці (конфігурація на введення). Для того щоб конфігурувати деякі лінії порту на вивід, необхідно встановити відповідні біти в потрібному регістрі TRIS в «0». Це можна робити командою "TRIS f". При операціях введення порти не защіпуються. Вхідний сигнал повинен бути присутнім поки йде процес читання (наприклад, MOVF 6, W). При операціях виводу порти защіпуються і зберігають значення до тих пір, поки не будуть перезаписані. На рисунку 2.6 не показані діоди, які захищають ніжку порту від зовнішніх імпульсів великої напруги. Вони обмежують імпульсну напругу на ніжці значеннями від Vss - 0,6 до Vdd + 0,6 В. Якщо статична напруга вийде поза вказані межі, то виникнуть
великі статичні струми, здатні вивести мікроконтролер з ладу.
Деякі канали портів введення/виводу мультипліковані з периферійними модулями мікроконтролера. Коли периферійний модуль включений, вивід не може використовуватися як універсальний канал введення/виводу.
