Лабораторна робота № 11. Система команд микроконтроллера PIC16FXХ
Система команд микроконтроллера PIC16FXХ Мета роботи: вивчення системи команд мікроконтролера (МК) Програмне забезпечення: програмне забезпечення комп'ютерного моделювання електронних схем (програма Proteus (ISIS), MPLAB IDE).
Короткі теоретичні відомості і методичні вказівки PIC16CXX - це 8-розрядні МК з RISCархітектурой, вироблені фірмою Microchiр Technology. Це сімейство МК відрізняється низькою ціною, низьким енергоспоживанням і високою швидкістю. Мікроконтролери мають вбудовані ЕППЗУ програми, ОЗУ даних і випускаються в 18 і 28 вивідних корпусах. PIC OTP - це одноразово програмовані користувачем контролери, призначені для повністю протестованих і закінчених виробів, в яких не буде відбуватися подальших змін коду. Ці контролери випускаються в дешевих пластикових корпусах із заздалегідь заданими типом зовнішнього генератора - кварцовим або RC. Для налагодження програм і макетування випускається варіант контролерів з ультрафіолетовим стиранням. Ці контролери допускають велике число циклів запису / стирання і мають дуже малий час стирання (звичайно 1-2 хв). Проте ціна таких контролерів істотно вище, ніж однократно програмувальних, тому їх невигідно встановлювати в серійну продукції. Для виробів, програма яких може мінятися або містить будь-змінні частини, таблиці, параметри калібрування, ключі і т. д., випускається електрично стирається і перепрограмувальний контролер PIC16F84. Він також містить електрично перепрограммируемое ПЗУ даних. Основним призначенням МК PIC16/17, як випливає з абревіатури PIC (Periрheral Interface Controller), є виконання інтерфейсних функцій. Цим пояснюються особливості їх архітектури:
· RISC-система команд, що характеризується малим набором одноадресних інструкцій (33, 35 або 55), кожна з яких має довжину в одне слово (12, 14 або 16 біт) і більшість виконується за один машинний цикл. В системі команд відсутні складні арифметичні команди (множення, ділення), гранично скорочений набір умовних переходів; · Висока швидкість виконання команд: при тактовій частоті 20 МГц час машинного циклу складає 200 нс (швидкодія дорівнює 5 млн операцій / с); · Наявність потужних драйверів (до 24 мА) на лініях портів введення / виводу; · Низька споживана потужність; · Орієнтація на цінову нішу гранично низької вартості, яка визначає використання дешевих корпусів з малою кількістю виводів (8, 14, 18, 28), відмова від зовнішніх шин адреси і даних (крім PIC17C4X), використання спрощеного механізму переривань і апаратного (програмно недоступного) стека.
Аналіз архітектури МК PIC з точки зору їх програмування і налагодження систем дозволяє зробити наступні висновки. RISC-система команд забезпечує високу швидкість виконання інструкцій, але викликає труднощі і зниження продуктивності при програмуванні нетривіальних алгоритмів. Оскільки всі інструкції в системі команд є одноадресних, завантаження константи в будь-який з регістрів вимагає двох інструкцій. Спочатку потрібно завантажити константу в робочий регістр W, а потім переслати його вміст в потрібну комірку пам'яті даних:
movw 12h movwf REG
Аналогічно, всі бінарні арифметико-логічні операції доводиться виконувати із залученням робочого регістра W. Висока швидкодія в значній мірі досягається за рахунок використання конвеєра команд. Мікроконтролери сімейства PIC мають дуже ефективну систему команд, що складається всього з 35 інструкцій. Всі інструкції виконуються за один цикл, за винятком умовних переходів і команд, що змінюють програмний лічильник, які виконуються за 2 циклу. Один цикл виконання інструкції складається з 4 періодів тактової частоти. Таким чином, при частоті 4 МГц час виконання інструкції складає 1 мкс. Кожна інструкція складається з 14 біт, які поділяються на 2 поля: код операції та операнд (можлива маніпуляція з регістрами, осередками пам'яті і безпосередніми даними). Висока швидкість виконання команд в PIC досягається за рахунок використання двохшинної гарвардської архітектури замість традиційної одношинної фоннеймановской. Гарвардська архітектура грунтується на наборі регістрів з розділеними шинами і адресним простором для команд і для даних. Hабор регістрів означає, що всі програмні об'єкти, такі як порти вводу / виводу, осередки пам'яті і таймер, являють собою фізично реалізовані апаратні регістри. Пам'ять даних (ОЗУ) для PIC16CXX має розрядність 8 біт, пам'ять програм (ЕППЗУ) має розрядність 12 біт для PIC16C5X і 14 біт для PIC16C7X. Використання гарвардської архітектури дозволяє досягти високої швидкості виконання бітових, байтових і реєстрових операцій. Крім того, Гарвадської архітектура допускає конвеєрне виконання інструкцій, коли одночасно виконується поточна інструкція і зчитується наступна. У традиційній же фоннеймановской архітектурі команди і дані передаються послідовно в часі через одну поділювану або мультиплексируемость шину, тим самим знижуючи швидкодію МК.
Набір команд PIC
Перейдемо до опису всього набору команд МК сімейства PIC. Попередньо Зробити деякі зауваження. По-перше, синтаксис написання команди передбачає зазначення двох полів: мнемонічне позначення коду операції та операнд, для якого використовується узагальнене позначення у вигляді символу f. Це означає, що залежно від способу адресації в поле операнда може перебувати: 1) адреса операнда (пряма адресація); дуже часто замість адреси вказується символічне ім'я операнда, однак у цьому випадку за допомогою псевдокоманди equ цьому імені ставиться у відповідність адреса вільної комірки пам'яті, наприклад: Cnt equ 20h; 2) ім'я регістра INDF (непряма адресація); в цьому випадку адреса операнда знаходиться в спеціальному регістрі непрямої адресації FSR; 3) операнд (безпосередня адресація).
По-друге, в командах, в яких передбачена операція з двома операндами, перший операнд знаходиться в комірці пам'яті, зазначеної за допомогою символу f, другий операнд завжди міститься в робочому регістрі W. По-третє, в ряді команд крім результату формуються ознаки результату, які записуються в спеціальний регістр STATUS. Ознака С (CARRY) встановлюється в 1 при виникненні переносу зі старшого (знакового) розряду при додаванні і при відсутності позички при відніманні. Ознака DC (DIGIT CARRY) встановлюється в 1 при виникненні перенесення з молодшої тетради в старшу при додаванні. Ознака Z (ZERO) встановлюється в 1, якщо результат операції дорівнює 0. Нарешті, в ряді команд після символу f через кому знаходиться символ d, званий бітом напряму. Він вказує місце, куди буде поміщений результат операції, виконаної в команді: якщо d = 0 (або W), результат записується в робочий регістр W (без зміни вмісту комірки пам'яті), якщо d = 1 (або f), результат записується в комірку пам'яті.
NOP
Не виконується ніяких дій. Ця інструкція зазвичай використовується в циклах тимчасової затримки або для точного налаштування часу виконання певної ділянки програми.
CLRW
Ця команда очищує робочий регістр W.
CLRF f CLRF робить для будь-якого регістра те саме, що CLRW робить для робочого регістра W.
|