Мікроконтролери MCS-51: програмна модель, структура, команди. Мікроконтролери сімейства mcs51 А. Загальні характеристики та призначення висновків

В даний час різними фірмами випускається безліч модифікацій та аналогів цього сімейства, як фірмою Intel, так і іншими виробниками, тактова частота та обсяг пам'яті зросли в десятки разів і продовжують підвищуватися. Доповнюється і набір вбудованих у БІС модулів, у велику кількість сучасних моделей вбудований рези- дентний швидкодіючий АЦП, що має до 12, а зараз може бути й більше розрядів. Але в основі сімейства МСS51 БІС 8051, 80С51, 8751, 87С51, 8031, 80С31 фірми Intel, перші зразки яких були випущені в 1980 році.

Мікроконтролери сімейства MCS51 виконані за високоякісною n-МОП технологією (серія 8ХХХ, аналог - серія 1816 в Росії та Білорусії) та k-МОП технології (серія 8ХСХХ, аналог - серія 1830). Другий символ, наступний за 8, означає: 0 – РПЗУ на кристалі немає, 7 – РПЗУ об'ємом 4К з ультрафіолетовим стиранням. Третій символ: 3 – ПЗУ накристаленет, 5 – якщо нетРПЗУ, то на кристалі масочне ПЗУ.

І так 80С51 - БІС за k-МОП технології з масковим ПЗУ на кристалі, 8031 ​​- БІС n-МОП без пам'яті програм (ПЗУ, РПЗУ) на кристалі, 8751 - БІС n-МОП з резидентним (розміщеним на кристалі) РПЗУ з ультрафіолетовим стиранням. Ми далі і розглядатимемо БІС 8751, роблячи, якщо потрібно застереження про відмінності інших схем, наводячи ті параметри, які були опубліковані для перших серійних БІС. Додаткову інформацію про всі сучасні модифікації Ви, при необхідності, можете знайти у фірмових довідниках та технічній документації.

А. Загальні характеристики та призначення висновків

Основу сімейства MCS51 складає п'ять модифікацій МК (мають ідентичні основні характеристики), основна відмінність між якими полягає у реалізації пам'яті програм та потужності споживання (див. таблицю 3.1). Мікроконтолер восьмирозрядний, тобто. має команди обробки восьмирозрядних слів, має Гарвардську архітектуру, тактова частота у базових зразків сімейства складає 12 МГц.

Таблиця 3.1.

Мікро-схеми

Внутрішня пам'ять програм, байт

Тип пам'яті програм

Внутрішня пам'ять даних, байт

Тактова частота, МГц

Струм споживання, мА

МК 8051 і 80С51 містять масочно-программируемое під час виготовлення кристала ПЗУ пам'яті програм ємністю 4096 байт і розраховані застосування у масової продукції. МК 8751 містить РПЗУ ємністю 4096 байт з ультрафіолетовим стиранням і зручна на етапі розробки системи при налагодженні програм, а також при виробництві невеликими партіями або при створенні систем, що вимагають в процесі експлуатації пе-

ріодичного підстроювання.

МК 8031 ​​та 80С31 не містять вбудованої пам'яті програм. Вони, як і описані раніше модифікації, можуть використовувати до 64 Кбайт зовнішньої пам'яті програм і ефективно використовуватися в системах, що вимагають істотно більшого за обсягом (ніж 4 Кбайт на кристалі) ПЗП пам'яті програм.

Кожен МК сімейства містить резидентну пам'ять даних ємністю 128 байт із можливістю розширення загального обсягу оперативної пам'яті даних до 64 Кбайт за рахунок використання зовнішніх ІС ОЗП.

    центральний восьмирозрядний процесор;

    пам'ять програм обсягом 4 Кбайт (тільки 8751 та 87С51);

    пам'ять даних обсягом 128 байт;

    чотири восьмирозрядні програмовані порти вводу-виводу;

    два 16-бітових багаторежимних таймера/лічильника;

    систему автовекторних переривань з п'ятьма векторами та двома програмно керованими рівнями пріоритетів;

    послідовний інтерфейс, що включає універсальний дуплексний прийомопередавач, здатний функціонувати в чотирьох режимах;

    генератор тактовий.

Система команд МК містить 111 базових команд з форматом 1, 2, або 3 байти. Мікроконтролер має:

    32 регістру загального призначення РОН, організованих як чотири банки по вісім регістрів з іменами R0… R7, вибір того чи іншого банку визначається програмою шляхом встановлення відповідних біт у регістрі стану програми PSW;

    128 програмно-керованих прапорів (бітовий процесор, див. далі);

    набір регістрів спеціальних функцій, керуючих елементами МК. Існують такі режими роботи мікроконтролера:

1). Загальне скидання. 2).Нормальне функціонування. 3).Режим зниженого енергоспоживання та режимхолостого ходу. 4). Режим програмування резидентного РПЗП, якщо воно є.

Ми тут основну увагу приділимо першим двом режимам роботи, докладний опис складу роботи МК у всіх режимах наведено в додатку П1.

РОН та зона бітового процесора розташовані в адресному просторі резиден- тної ОЗП з адресами від 0 до 80h.

У верхній зоні адрес резидентної оперативної пам'яті розташовані регістри спеціальних функцій (SFR, Special Function Registers). Їх призначення наведено у табл. 3.2.

Таблиця 3.2.

Позначення

Найменування

Акумулятор

Реєстр В

Реєстр стану програми

Покажчик стека

Покажчик даних. 2 байти:

Молодший байт

Старший байт

Реєстр пріоритетів переривань

Реєстр дозволу переривань

Реєстр режимів таймера/лічильника

Реєстр керування таймера/лічильника

Таймер/лічильник 0. Старший байт

Таймер/лічильник 0. Молодший байт

Таймер/лічильник 1. Старший байт

Таймер/лічильник 1. Молодший байт

Управління послідовним портом

Буфер послідовного порту

Управління споживанням

* - регістри, що допускають побітову адресацію

Стисло розглянемо функції регістрів SFR, наведених у таблиці 3.2.

Акумулятор АCC - Регістр акумулятора. Команди, призначені для роботи.

ти з акумулятором, використовують мнемоніку "А", наприклад, MOV А, Р2 . Мнемоніка "АСС" використовується, наприклад, при побітовій адресації акумулятора. Так, символічне ім'я п'ятого біта акумулятора при використанні асемблера А5М51 буде наступним: АСС. 5. .

Реєстр У . Використовується під час операцій множення та поділу. Для інших інструкцій регістр може розглядатися як додатковий надоперативний регістр.

Реєстр стану програми PSW містить інформацію про стан програми та встановлюється частково автоматично за результатом виконаної операції, частково користувачем. Позначення та призначення розрядів регістру наведено відповідно у таблицях 3.3 та 3.4.

Таблиця 3.3.

Позначення

Таблиця 3.4.

Позначення

Призначення бітів

Доступ до бити

Прапор перенесення. Змінюється під час виконання ряду арифметичних та логічних інструкцій.

Апаратно чи програмно

Прапор додаткового перенесення. Апаратно встановлюється/скидається під час виконання інструкцій додавання або віднімання для вказівки перенесення або позики в биті 3 при утворенні молодшого напівбайта результату (D0-D3).

Апаратно чи програмно

Прапор 0. Прапор, який визначається користувачем.

Програмно

Програмно

Вказівник банку робочих регістрів

Програмно

Банк 0 з адресами (00Н - 07Н) Банк 1 з адресами (08Н - 0FН) Банк 2 з адресами (10Н - 17Н) Банк 3 з адресами (18Н - 1FН)

Прапор переповнення. Апаратно встановлюється або скидається під час виконання арифметичних інструкцій для вказівки стану переповнення

Апаратно чи програмно

Резервний. Містить тригер, доступний за записом та читанням, який можна використовувати

Біт парності. Апаратно скидається або встановлюється у кожному циклі інструкцій для вказівки парної чи непарної кількості розрядів акумулятора, що перебувають у стані "1".

Апаратно чи програмно

Покажчик стека - 8-бітовий регістр, вміст якого інкрементується перед записом даних у стек при виконанні команд PUSH та CALL. При початковому скиданні покажчик стека встановлюється 07Н, а область стека в ОЗУ даних починається з адреси 08Н. При необхідності шляхом перевизначення покажчика стека область стека може бути розташована в будь-якому місці внутрішнього пам'яті даних мікроконтролери.

Покажчик даних DPTR складається з старшого байта (DPH) та молодшого байта

(DPL). Містить 16-бітову адресу при зверненні до зовнішньої пам'яті. Може використовувати-

ватись як 16-бітовий регістр або як два незалежні восьмибітові регістри.

Порт0 - ПортЗ. Окремими бітами регістрів спеціальних функцій Р0, Р1, Р2, РЗ є біти - "засувки" висновків портів Р0, Р1, Р2, РЗ.

Буфер послідовного порту SBUF являє собою два окремі реєстри: буфер передавача і буфер приймача. Коли дані записуються в SBUF, вони надходять у буфер передавача, причому запис байта SBUF автоматично ініціює його передачу через послідовний порт. Коли дані читаються із SBUF, вони вибираються з буфера приймача.

Реєстри таймер. Реєстрові пари (ТН0, ТL0) і (ТН1, TL1) утворюють 16-

бітові рахункові регістри відповідно таймера/лічильника 0 та таймера/лічильника 1.

Реєстри управління. Регістри спеціальних функцій IР, IЕ, ТМOD, ТСОN, SCON і РСОN містять біти управління та біти стану системи переривань, тай-

заходів/лічильників та послідовного порту. Вони будуть детально розглянуті далі.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

МК при функціонуванні забезпечує:

    мінімальний час виконання команд додавання-1 мкс;

    апаратне множення та поділ з мінімальним часом виконання - 4 мкс.

У МК передбачено можливість завдання частоти внутрішнього генератора за допомогою кварцу, LС-ланцюжка або зовнішнього генератора.

Розширена система команд забезпечує побайтову та побітову адресацію, двійкову та двійково-десяткову арифметику, індикацію переповнення та визначення парності/непарності, можливість реалізації логічного процесора.

Найважливішою та відмінною рисою архітектури сімейства MCS51 є те, що АЛУ може поряд з виконанням операцій над 8-розрядними типами даних маніпулювати однорозрядними даними. Окремі програмно-доступні біти можуть бути встановлені, скинуті або замінені їх доповненням, можуть пересилатися, перевірятися та

Рис.3.2. Зовнішні висновки

мікроконтролера

використовуватись у логічних обчисленнях. Тоді як підтримка простих типів даних (при сущ-

вуючої тенденції до збільшення довжини слова) може з першого погляду здатися кроком назад, ця якість робить мікроконтролери сімейства MCS51 особливо зручними для застосувань, в яких використовуються контролери. Алгоритми роботи останніх за своєю припускають наявність вхідних та вихідних булевих змінних, які складно реалізувати за допомогою стандартних мікропроцесорів. Всі ці властивості загалом називають бульовим процесором сімейства MCS51. Завдяки такому потужному АЛУ набір інструкцій мікроконтролери сімейства MCS51 однаково добре підходить як для керування в реальному масштабі часу, так і для алгоритмів з великим обсягом даних.

Схемотехнічне зображення мікроконтролера представлено на рис. 3.2. У базовому варіанті він упакований у 40-вивідний DIP корпус. Розглянемо призначення висновків.

Почнемо з висновків харчування «0 В» і «5 В» , За якими він отримує основне харчування. Струм споживання наведено в табл. 3.1.

Висновок «RST» - Скидання мікроконтролера. При подачі цього висновку активного високого рівня запускається режим спільного скидання та МК робить такі дії:

Встановлює лічильник команд PC та всі регістри спеціальних функцій, крім засувок портів Р0-РЗ, покажчика стека SP та регістра SBUF, в нуль;

    покажчик стека приймає значення, що дорівнює 07Н;

    забороняє всі джерела переривань, роботу таймерів-лічильників та послідовного

    вибирає БАНК 0 ОЗУ, готує порти Р0-РЗ для прийому даних та визна-

поділяє висновки ALE та РМЕ як входи для зовнішньої синхронізації;

      у регістрах спеціальних функцій PCON, IP та IE резервні біти набувають випадкових значень, а всі інші біти скидаються в нуль;

      у регістрі SBUF встановлюються випадкові значення.

      встановлює фіксатори-засувки портів Р0-РЗ "1".

Стан регістрів мікроконтролера після скидання наведено в таблиці 3.5.

Таблиця 3.5.

Інформація

Невизначена

0ХХХ0000В для k-MOП 0XXXXXXXB для n-МОП

Висновок RST має й альтернативну функцію. Через нього подається резервне харчування для збереження постійним вмісту ОЗУ мікроконтролера при знятті основного.

Висновки BQ1, BQ2 призначені для підключення кварцового резонатора, що визначає тактову частоту роботи МК.

Висновок ЕА` (E xternal A dress зовнішній адреса) - призначений для активізації режиму читання керуючих кодів із зовнішньої пам'яті програм, при подачі цього висновку активного низького рівня. Висновок має і альтернативне призначення (функцію). На нього подається напруга програмування РПЗУ як програмування.

Висновок PME (P rogram M emory E nable Дозвіл пам'яті програм) - призначений для керування циклом читання з пам'яті програм і автоматично активізується МК у кожному машинному циклі.

Висновок ALE (A dress L ength E nable Дозвіл молодшого адреси) стробує виведення молодшої частини адреси по порту Р0. Висновок використовується і при програмуванні РПЗУ, при цьому на нього подається стробуючій процес програмування імпульс.

МК містить чотири групи портів: Р0, Р1, Р2 і Р3. Це 40-виводів мікроконтролера, що залишилися. Ці порти можуть служити для побитного введення - виведення інформації, але крім цього кожен з них має свою спеціалізацію. Узагальнена функціональна схема порту представлена ​​на рис. 3.3. Порт містить вихідні ключі на польових транзисторах, підключені до виводу, перемикач функцій, клямку на D-тригері та логіку управління. У засувку по внутрішній шині МК може бути записана одиниця або нуль. Ця інформація через перемикач функцій надходить на вихідні ключі та виведення МК. У стані одиниці обидва транзистори N і N1 закриті, але відкрито N2. У стані нуля N відкриває-

ся, а N2 закривається. У момент, коли порт виконує альтернативну функцію, на яку він спеціалізований, стан засувки з виводу знімається. Мікроконтролер окремо може вважати стан засувки порту та стан його виведення, встановлений зовнішнім сигналом. Для цього в асемблері МК є спеціальні команди, що активізують відповідні лінії. Для читання стану виведення в клямку відповідного порту повинна

бути попередньо записано

Від внутрішньо-

Управління Засувка

Перемикач функцій

Vcc

Вихідні

одиниця. При активізації лінії «читання засувки» на виході осередку «І», до якої підключена ця лінія

ній шини МК D Q

Запис у клямку C Q

Читання засувки

Виведення порту

ється стан засувки, що надходить на внутрішню шину МК, при активізації

"Читання виведення" - стан зовнішнього виведення порту.

Порт Р0 - Універсальний двонаправлений порт

введення-виведення. За цим портом

закріплено функцію організації зовнішніх шин адрес і

Мал. 3.3. Функціональна схема порту мікроконтролера

даних для розширення пам'яті програм та пам'яті даних

мікроконтролера. Коли йде звернення до зовнішньої пам'яті програм або виконується команда звернення зовнішньої пам'яті даних, на висновках порту встановлюється молодша частина адреси (А0…А7), яка стробується високим рівнем виведення ALE. Потім, при запису в пам'ять даних, інформація, що записується з внутрішньої шини МК надходить на висновки порту Р0. В операціях читання, навпаки, інформація з висновків порту надходить на внутрішню шину. Особливістю порту Р0 є відсутність «підтягуючого» транзистора N2, що забезпечує подачу живлення на висновок. При записі в клямку порту одиниці він просто переводиться у високоімпедансний стан, що необхідно для нормальної роботи шини даних. При необхідності запитувати через виведення будь-які зовнішні пристрої слід передбачати зовнішні резистори від ланцюгів живлення на виведення порту.

Порт Р1 – універсальний двонаправлений порт введення-виведення без альтернативних функцій.

Порт Р2 – універсальний двонаправлений портвводу-виводу, який як альтернативна функція здійснює видачу старшої частини адреси (А8…А15) при зверненні до зовнішньої пам'яті.

Порт Р3 – універсальний двонаправлений порт введення-виводу, кожен біт якого передбачає виконання різних альтернативних функцій. Альтернативні функції реалізуються лише в тому випадку, якщо в клямки висновків порту записані одиниці, в іншому випадку виконання альтернативних функцій блокується. Перелічимо їх окремо кожному за біта:

Р3.0 RxD (R ead e X ternal D ate, читати зовнішні дані) – вхід вбудованого послідовного приймача.

Р3.1 ТxD (T ype e X ternal D ate, передавати зовнішні дані) – вихід вбудованого послідовного приймач-передавача.

Р3.2 INT0` (INT errupt, переривання) – вхід зовнішнього переривання 0.

Р3.3 INT1` - Вхід зовнішнього переривання 1.

Р3.4 С/T0 - Вхід нульового вбудованого таймера/лічильника.

Р3.5 С/T1 - Вхід першого вбудованого таймера/лічильника.

Р3.6 WR` (W rite, писати) – виведення управління циклом запису у пам'яті даних.

Р3.7 RD` (R ead, читати) – виведення керування циклом читання з пам'яті даних.

Висновки порту Р1, Р2 і Р3 здатні в одиниці видавати струмоколо 0.2мА і приймати в нулі струм 3 мА, висновки порту Р0 потужніші і здатні в одиниці видавати струм близько 0.8мА і приймати в нулі струм 5 мА. Коротку інформацію про призначення висновків мікроконтролера наведено в таблиці 3.6.

Таблиця 3.6.

Позначення

Призначення висновку

8-розрядний двонаправлений порт Р1. Вхід адреси А0-А7 під час перевірки внутрішнього ПЗУ (РПЗУ)

Вхід вихід

Сигнал загального скидання. Виведення резервного живлення ОЗП від зовнішнього джерела (для 1816)

8-розрядний двонаправлений порт P3 з додатковими функціями

Вхід вихід

Послідовні дані приймача - RхD

Послідовні дані передавача - ТхD

Вхід зовнішнього переривання 0- INТ0`

Вхід зовнішнього переривання 1-INT1`

Вхід таймера/лічильника 0: - Т0

Вхід таймера/лічильника 1: - Т1

Вихід стробуючого сигналу під час запису у зовнішню пам'ять даних: - WR`

Вихід стробуючого сигналу під час читання із зовнішньої пам'яті даних – RD`

Висновки для підключення кварцового резонатора.

вихід вхід

Загальний висновок

8-розрядний двонаправлений порт Р2. Вихід адреси А8-А15 у режимі роботи із зовнішньою пам'яттю. У режимі перевірки внутрішнього ПЗУ висновки Р2.0 – Р2.6 використовуються як вхід адреси А8-А14. Висновок Р2.7 - дозвіл на читання ПЗУ.

Вхід вихід

Дозвіл програмної пам'яті

Вихідний сигнал дозволу фіксації адреси. Під час програмування РПЗУ сигнал: PROG

Вхід вихід

Блокування роботи із внутрішньою пам'яттю. При програмуванні РПЗП подається сигнал UРR

Вхід вихід

8-розрядний двонаправлений порт Р0. Шина адреси/даних г роботи із зовнішньою пам'яттю. Вихід даних D7-D0 у режимі перевірки внутрішнього ПЗП (РПЗП).

Вхід вихід

Виведення живлення від джерела напруги +5В

ПЛАН ЛЕКЦІЇ

1. Введення

2. Арифметичні та логічні інструкції

3. Команди передачі даних

4. Булеві операції

5. Інструкції переходів

1. Введення

Система команд MCS-51підтримує єдиний набір інструкцій, призначений до виконання 8-бітових алгоритмів управління виконавчими пристроями. Існує можливість використання швидких методів адресації внутрішнього ОЗУ, здійснення бітових операцій над невеликими структурами даних. Є розгорнута система адресації однобітових змінних як самостійного типу даних, що дозволяє використовувати окремі біти в логічних і керуючих команд булевої алгебри.

Режими адресації : набір команд MCS-51підтримує такі режими адресації. Пряма адресація: операнд визначається 8-бітовою адресою в інструкції Пряма адресація використовується лише для молодшої половини внутрішньої пам'яті даних та регістрів SFR. Непряма адресація: інструкція адресує регістр, що містить адресу операнда Даний вид адресації використовується для зовнішнього та внутрішнього ОЗП. Для вказівки 8-бітових адрес можуть використовуватися регістри R0і R1обраного реєстрового банку або покажчик стека SP. Для 16-бітової адресації використовується лише регістр покажчика даних DPTR.

Реєстрові інструкції : регістри R0-R7поточного регістрового банку можуть бути адресовані через конкретні інструкції, що містять 3-бітове поле, що вказує на номер регістру в самій інструкції. У цьому випадку відповідного поля адреси в команді немає. Операції з використанням спеціальних регістрів: деякі інструкції використовують індивідуальні регістри (наприклад, операції з акумулятором, DPTR, і т.д.). У разі адресу операнда взагалі вказується у команді. Він визначається кодом операції.

Безпосередні константи : константа може бути прямо у команді за кодом операції.

Індексна адресація : індексна адресація може використовуватися лише для доступу до програмної пам'яті та лише в режимі читання. У цьому режимі здійснюється перегляд таблиць у пам'яті програм. 16-бітовий регістр ( DPTRабо програмний лічильник) вказує базову адресу необхідної таблиці, а акумулятор вказує на точку входу до неї.

Набір командмає 42 мнемонічні позначення команд для конкретизації 33 функцій цієї системи. Синтаксис більшості команд асемблерної мови складається з мнемонічного позначення функції, за яким йдуть операнди, що вказують методи адресації та типи даних. Різні типи даних чи режими адресації визначаються встановленими операндами, а чи не змінами мнемонических позначень.

Систему команд умовно можна розбити п'ять груп: арифметичні команди; логічні команди; команди передачі; команди бітового процесора; команди розгалуження та передачі управління. Позначення та символи, що використовуються в системі команд, наведені далі.

Таблиця. Позначення та символи, що використовуються в системі команд

Позначення, символ

Призначення

Акумулятор

Реєстри поточного обраного банку регістрів

Номер завантажуваного регістру, вказаного у команді

direct

Прямо адресована 8-бітова внутрішня адреса осередку даних, яка може бути осередком внутрішнього ОЗП даних (0-127) або регістром спеціальних функцій SFR (128-255)

Непрямо адресований 8-бітовий осередок внутрішнього ОЗУ даних

8-бітове безпосереднєце, що входить у код операції (КОП)

dataH

Старші біти (15–8) безпосередніх 16-бітових даних

dataL

Молодші біти (7–0) безпосередніх 16-бітових даних

11-бітова адреса призначення

addrL

Молодші біти адреси призначення

8-бітовий байт зміщення зі знаком

Біт із прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або регістрі спеціальних функцій SFR

a15, a14...a0

Біти адреси призначення

Вміст елемента Х

Вміст за адресою, що зберігається в елементі Х

Розряд М елемента Х


+

*
AND
OR
XOR
/X

Операції:
додавання
віднімання
множення
поділу
логічного множення (операція І)
логічного складання (операція АБО)
додавання за модулем 2 (що виключає АБО)
інверсія елемента Х

Мнемонічні позначення функцій однозначно пов'язані з конкретними комбінаціями способів адресації та типами даних. Загалом у системі команд можливо 111 таких поєднань.

2. Арифметичні та логічні інструкції

Як п рімер арифметичної команди, Операція додавання може бути виконана однією з нижченаведених команд.

ADDA,7 F 16 - Додати до вмісту регістру А число 7 F 16 та результат зберегти у регістрі А;

ADDA,@ R0 – додати до вмісту регістру А число, адреса якого (@ – commercial at ) зберігається в регістрі R 0 (непряма адресація), та результат зберегти у регістрі А;

ADD A,R7– додати до вмісту регістру А вміст регістру R 7 та результат зберегти в регістрі А;

ADD A, # 127- Додати до вмісту регістру А число, адреса комірки зберігання якого 127 ( # – символ номера), і результат зберегти в регіс т- Ре А.

Усі арифметичні інструкції виконуються за один машинний цикл, за винятком команди INC DPTR(Зміщення покажчика даних DPTRна наступний байт), що вимагає два машинних цикли, а також операцій множення та поділу, що виконуються за 4 машинні цикли. Будь-який байт у внутрішній пам'яті даних може бути інкрементований та декрементований без використання акумулятора.

Інструкція MUL ABздійснює множення (multiplication – множення) даних в акумуляторі на дані, що знаходяться в регістрі B, поміщаючи твір у регістри A (молодша половина) та B (старша половина).

Інструкція DIV ABділить (division – поділ) вміст акумулятора на значення регістрі B, залишаючи залишок в B, а приватне – в акумуляторі.

Інструкція DA Aпризначена для двійково-десяткових арифметичних операцій (арифметичні операції над числами, поданими у двійково-десятковому коді). Вона не робить перетворення двійкового числа в двійково-десяткове, А лише забезпечує правильний результат при додаванні двох двійково-десяткових чисел.

приклад логічної команди: операція логічного І може бути виконана однією з наступних команд:

ANLA,7 F 16 - Логічне множення вмісту регістру А на число 7 F 16 і результат зберігається у регістрі А;

ANLA,@ R1 - Логічне множення вмісту регістру А на число, адреса якого зберігається в регістрі R 1 (непряма адресація), та результат зберегти у регістрі А;

ANL A,R6- Логічне множення вмісту регістру А на вміст регістру R 6, та результат зберегти в регістрі А;

ANL A,#53 – логічне множення вмісту регістру А на число, адреса комірки зберігання якого 53 16 і результат зберегти в регістрі А.

Усі логічні операції над вмістом акумулятора виконуються за машинний цикл, інші – за два. Логічні операції можуть проводитися над будь-яким із нижніх 128 байтів внутрішньої пам'яті даних або над будь-яким регістром SFR (регістрів спеціальних функцій) у режимі прямої адресації без використання акумулятора.

Операції циклічного зсуву RL A, RLC A тощо переміщують вміст акумулятора на один біт вправо або вліво. У разі лівого циклічного зсуву молодший біт переміщається до старшої позиції. У разі правого циклічного зсуву відбувається зворотне.

Операція SWAP Aздійснює обмін молодшої та старшої зошит в акумуляторі.

3. Команди передачі даних

Команда MOV dest, srcдозволяє пересилати дані між осередками внутрішнього ОЗП або областю регістрів спеціальних функцій SFRбез використання акумулятора. При цьому робота з верхньою половиною внутрішньої ОЗП може здійснюватися тільки в режимі непрямої адресації, а звернення до регістрів SFR– лише у режимі прямої адресації.

У всіх мікросхемах MCS-51стек розміщується безпосередньо у резидентній пам'яті даних та збільшується вгору. Інструкція PUSHспочатку збільшує значення в регістрі покажчика стека SP, а потім записує в стек байт даних. Команди PUSHі POPвикористовуються тільки в режимі прямої адресації (записуючи або відновлюючи байт), але стек завжди доступний при непрямій адресації через регістр SP. Таким чином, стек може використовувати верхні 128 байт пам'яті даних. Ці міркування виключають можливість використання стічних команд для адресації регістрів SFR.

Інструкції передачі даних включають 16-бітову операцію пересилання MOV DPTR,#data16, яка використовується для ініціалізації регістру покажчика даних DPTRпід час перегляду таблиць у програмній пам'яті або для доступу до зовнішньої пам'яті даних.

Операція XCH A,byteзастосовується для обміну даними між акумулятором і байтом, що адресується. Команда XCHD A, @ Riаналогічна попередньої, але виконується тільки для молодших зошит, що беруть участь в обміні операндів.

Для доступу до зовнішньої пам'яті даних використовується лише непряма адресація. У разі однобайтних адрес використовуються регістри R0або R1поточного регістрового банку, а для 16-розрядних – регістр покажчика даних DPTR. За будь-якого способу доступу до зовнішньої пам'яті даних акумулятор грає роль джерела чи приймача інформації.

Для доступу до таблиць, розміщених у програмній пам'яті, використовуються команди:

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

Як базова адреса таблиці використовується вміст відповідно регістру покажчика даних DPTRабо PC(програмного лічильника), а зміщення береться з A. Ці команди використовуються виключно для читання даних із програмної пам'яті, але не для запису до неї.

4. Булеві операції

Мікросхеми MCS-51містять у своєму складі «бульовий» процесор. Внутрішнє ОЗУ має 128 прямо адресованих біт. Простір регістрів спеціальних функцій SFRможе підтримувати до 128 бітових полів. Бітові інструкції здійснюють умовні переходи, пересилання, скидання, інверсії, операції «І» та «АБО».Всі ці біти доступні в режимі прямої адресації.

Біт перенесення CFу регістрі спеціальних функцій «слово стану програми PSW» використовується як однобітний акумулятор бульового процесора.

5. Інструкції переходів

Адреси операцій переходів позначаються мовою асемблера влучною чи справжнім значенням у просторі пам'яті програм. Адреси умовних переходів асемблюються у відносне зміщення – знаковий байт, що додається до програмного лічильника PCу разі виконання умови переходу. Межі таких переходів лежать у межах між мінус 128 та 127 щодо першого байта, наступного за інструкцією. У регістрі спеціальних функцій «слово стану програми PSW» відсутня прапорець нуля, тому інструкції JZі JNZперевіряють умову "рівно нулю" як тестування даних в акумуляторі.

Існує три види команди безумовного переходу: SJMP, LJMPі AJMP- Розрізняються форматом адреси призначення. Інструкція SJMPкодує адресу як відносне усунення, і займає два байти. Дальність переходу обмежена діапазоном від мінус 128 до 127 байт щодо інструкції SJMP.

В інструкції LJMPвикористовується адреса призначення у вигляді 16-бітової константи. Довжина команди складає три байти. Адреса призначення може розташовуватись у будь-якому місці пам'яті програм.

Команда AJMPвикористовує 11-бітну константу адреси. Команда складається із двох байт. При виконанні цієї інструкції молодші 11-біт адресного лічильника заміщаються 11-бітною адресою з команди. П'ять старших біт програмного лічильника PCзалишаються незмінними. Таким чином, перехід може здійснюватися всередині 2К-байтного блоку, в якому розташовується інструкція, яка йде за командою AJMP.

Існує два види команди виклики підпрограми: LCALLі ACALL. Інструкція LCALLвикористовує 16-бітну адресу підпрограми, що викликається. У цьому випадку підпрограма може бути розташована у будь-якому місці пам'яті програм. Інструкція ACALLвикористовує 11-бітну адресу підпрограми. У цьому випадку підпрограма, що викликається, повинна бути розташована в одному 2К-байтному блоці з інструкцією, наступною за ACALL. Обидва варіанти команди кладуть на стек адресу наступної команди та завантажують у програмний лічильник PC відповідне нове значення.

Підпрограма завершується інструкцією RET, що дозволяє повернутися на інструкцію, яка йде за командою CALL. Ця інструкція знімає з стека адресу повернення і завантажує її в програмний лічильник PC . Інструкція RETIвикористовується для повернення з підпрограм обробки переривань. Єдина відмінність RETIвід RETполягає в тому що RETIінформує систему у тому, що обробка переривання завершилася. Якщо в момент виконання RETIнемає інших переривань, то вона ідентична RET.

Інструкція DJNZпризначена для керування циклами. Для виконання циклу N раз треба завантажити в лічильник байт зі значенням N та закрити тіло циклу командою DJNZ, що вказує на початок циклу.

Команда CJNEпорівнює два своїх операнда як беззнакові цілі і здійснює перехід за вказаною в ній адресою, якщо порівнювані операнди не рівні. Якщо перший операнд менше, ніж другий, то біт перенесення CF встановлюється у «1».

Усі команди в асембльованому вигляді займають 1, 2 або 3 байти.

УДК 681.5, 681.325.5 (075.8)

ББК 32.973.202-018.2 я 73

Щербина О. Н.Обчислювальні машини, системи та мережі. Мікроконтролери та мікропроцесори в системах управління: учеб. посібник/О.М. Щербіна, П.А. Нечаєв-СПб.: З-во Політехн. ун-ту, 2012.-226 с.

Відповідає змісту державного освітнього стандарту напрямів підготовки та спеціальностей у галузі управління в технічних системах, електроенергетики та електротехніки та змісту зразкової навчальної програми дисципліни «Обчислювальні машини, системи та мережі».

Розглянуто фундаментальні питання логічної організації мікропроцесорних систем з прикладу базової архітектури мікроконтролерного сімейства MCS-51 фірми Intel. Описано технологію програмування мікроконтролерів мовами Асемблер та СІ.

Може бути корисним для студентів та викладачів вищих технічних закладів, спеціалістів з автоматизації технологічних процесів та виробничого обладнання, а також для інженерів-проектувальників мікропроцесорних систем.

Також відповідає змісту державного освітнього стандарту дисциплін «Мікроконтролери та мікропроцесори в системах управління» та «Електронні пристрої автоматики» бакалаврської, інженерної та магістерської підготовки за напрямом 140400 «Електроенергетика та електротехніка».

Друкується за рішенням редакційно-видавничої ради

Санкт-Петербурзького державного політехнічного університету.

© Щербина А. Н., Нечаєв П. А., 2012

© Санкт-Петербурзький державний

політехнічний університет, 2012

ISBN 978-5-7422-3553-8


Вступ.. 7

Розділ 1. Архітектура сімейства MCS51. 10

1.1 Загальні характеристики 10

1.2 Структурна схема 11



1.3 Призначення висновків мікроконтролера 8051 15

1.4 Організація пам'яті 17

1.4.1 Пам'ять програм (ПЗП) 18

1.4.2 Пам'ять даних (ОЗП) 19

1.4.3 Реєстри спеціальних функцій. 20

1.4.4 Реєстр прапорів (PSW) 23

1.5 Пристрій керування та синхронізації 26

1.6 Організація портів введення-виведення 27

1.6.1 Загальні відомості. 27

1.6.2 Альтернативні функції. 27

1.7. Таймери / лічильники мікроконтролерів сімейства 8051. 28

1.7.1. Структура таймерів-лічильників. 28

1.7.2 Режими роботи таймерів-лічильників. 30

1.8. Послідовний порт 32

1.8.1. Структура послідовного порту. 32

1.8.2. Регістр керування/статусу приймача SCON.. 34

1.8.3. Реєстр керування потужністю PCON.. 36

1.9. Система переривань 37

1.9.1. Структура системи переривань. 37

1.9.2 Виконання підпрограми переривання. 40

Глава 2. Особливості мікроконтролера 80C51GB.

2.1 Функціональні особливості 42

2.2 Порти I/O P0-P5 43

2.2.1 Функціонування портів вводу-виводу. 43

2.2.2 Запис у порт.

2.3 Особливості системи переривань 8XC51GB.

Дозвіл/заборона переривань. 50

Управління пріоритетами переривань. 51

Зовнішні переривання. 54

2.3. Вузол АЦП 56

2.4. Апаратний сторожовий таймер 61

2.5. Виявлення збою тактового генератора 63

2.6. Матриця програмованих лічильників РСА 64

2.6.1. Структура PCA.. 64

2.6.2. Реєстр лічильника РСА (CMOD) 66

2.6.3. Регістр управління лічильника РСА (CON) 67

2.6.4. Модулі порівняння/фіксації. 68

2.7. Розширений послідовний порт 76

2.8. Таймери/лічильники 79

Розміщення висновків мікроконтролерів групи 8XC51GB.

Розділ 3. Програмування MK 8051GB.

3.1. Програмна модель 89

3.2 Типи даних 93

3.3 Способи адресації даних 93

3.4 Система команд 95

3.4.1. Загальна характеристика. 95

3.4.2 Типи команд. 96

3.4.3 Типи операндів. 97

3.4.4 Команди пересилання даних мікроконтролера. 98

3.4.5 Команди арифметичних операцій 8051. 101

3.4.6 Команди логічних операцій мікроконтролера 8051. 104

3.4.7 Команди операцій над бітами мікроконтролера 8051. 106

3.5 Налагодження програм 111

Розділ 4. Мова програмування ASM-51. 112

4.2 Запис тексту програми 113

4.3. Алфавіт мови. 114

4.4 Ідентифікатори. 115

4.5 Числа 117

4.6 Директиви 118

4.7 Реалізація підпрограм мовою ASM51 122

4.7.1 Структура підпрограми-процедури мовою ASM51. 122

4.7.2 Передача змінних параметрів у підпрограму. 123

4.7.3 Реалізація підпрограм-функцій мовою ASM51. 123

4.7.4 Реалізація підпрограм обробки переривань мовою ASM51. 124

4.8 Структурне програмування мовою асемблера. 125

4.9 Особливості трансляції багатомодульних програм. 126

4.10 Використання сегментів 128

4.10.1 Розбиття пам'яті МК на сегменти. 128

4.10.2. Абсолютні сегменти пам'яті. 129

4.10.2 Переміщувані сегменти пам'яті. 131

Глава 5. Мова програмування С-51. 134

5.1 Загальна характеристика мови 134

5.3 Структура програм С-51 136

5.3. Елементи мови програмування С-51 138

5.3.1. Символи.. 138

5.3.2. Лексичні одиниці, роздільники та використання прогалин. 141

5.3.3 Ідентифікатори.. 142

5.3.4 Ключові слова. 143

5.3.5 Константи.. 143

5.4. Вирази в операторах мови 146

програмування C-51 146

5.5. Пріоритети виконання операцій 148

5.6. Оператори мови програмування C-51 149

5.6.1. Оператори оголошення. 150

5.6.2 Оператори, що виконуються. 150

5.6.3 Оператор присвоєння. 151

5.6.4 Умовний оператор. 151

5.6.5 Структурний оператор (). 152

5.6.6 Оператор циклу for. 152

5.6.7 Оператор циклу з перевіркою умови до тіла циклу while. 153

5.6.8 Оператор циклу із перевіркою умови після тіла циклу do while. 154

5.6.9. Оператор break. 155

5.6.10 Оператор continue. 155

5.6.11 Оператор вибору switch. 155

5.6.12 Оператор безперечного переходу goto. 157

5.6.13 Оператор виразу. 158

5.6.14 Оператор повернення із підпрограми return. 158

5.6.15 Порожній оператор. 158

5.7. Оголошення змінних мовою програмування C-51. 159

5.7.1. Оголошення змінної. 159

5.7.3 Цілі типи даних. 161

5.7.4 Числа з плаваючою комою. 162

5.7.5 Змінні типи, що перераховуються. 162

5.7.6. Оголошення масивів у мові програмування C-51. 164

5.7.7. Структури.. 165

5.7.8. Об'єднання (суміші) 166

5.8. Використання покажчиків у мові C-51 167

5.8.1. Оголошення покажчиків. 167

5.8.2. Нетипізовані покажчики. 168

5.8.3. Пам'ять залежних покажчиків. 169

5.9. Оголошення нових типів змінних 169

5.10. Ініціалізація даних 170

5.11. Використання підпрограм у мові програмування С-51. 170

5.11.1. Визначення підпрограм.. 171

5.11.2. Параметри підпрограм.. 173

5.11.3. Попереднє оголошення підпрограм.. 174

5.11.4 Виклик підпрограм.. 176

5.11.5 Рекурсивний виклик підпрограм. 176

5.11.6 Підпрограми обробки переривань. 177

5.11.7 Області дії змінних та підпрограм. 178

5.12. Багатомодульні програми 179

Глава 6. Підготовка програм у інтегрованому середовищі розробки Keil μVision2. 182

6.1 Створення проекту мовою ASM-51 182

6.2 Приклад створення проекту мовою C для навчального контролера в інтегрованому середовищі розробки Keil μVision2 188

Глава 7. Опис навчального контролера. 199

7.1. Структура контролера 199

7.2. Адресний простір 200

7.2.1. Розподіл пам'яті. 200

7.2.2 Зовнішня пам'ять. 201

7.2.3. Внутрішня пам'ять даних. 202

7.3. Розподіл портів введення-виведення 202

7.4. Послідовний порт………………………………...203

7.5. Робота з РКІ 205

7.6. Панелі контролера…………………………………………………213

ДОДАТОК П2СТРУКТУРА ЗВІТУ ПРО ЛАБРОРАТОРНУ РОБОТУ……..217

Додаток П3 Коди машинних команд. 217

Список литературы... 224


Вступ

У освоєнні спеціальностей, пов'язаних з автоматизацією технологічних процесів та виробництв, вивчення мікроконтролерів є одним із важливих розділів.

У світі відбувається безперервний розвиток і поява нових і нових 16- і 32-розрядних мікроконтролерів і мікропроцесорів, але найбільша частка світового мікропроцесорного ринку і досі залишається за 8-розрядними пристроями. За всіма прогнозами аналітичних компаній на найближчий час лідируюче положення 8-розрядних мікроконтролерів на світовому ринку збережеться.

В даний час серед усіх 8-розрядних мікроконтролерів сімейство MCS-51 є безперечним лідером за кількістю різновидів та кількістю компаній, що випускають його модифікації. Воно отримало свою назву від першого представника цього сімейства – мікроконтролера 8051. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої або внутрішньої програмної пам'яті та прийнятна ціна забезпечили цьому мікроконтролеру успіх на ринку.

Переваги сімейства MCS-51:

· архітектура, що є стандартом де-факто;

· Надзвичайна широта сімейства та різноманітність можливостей;

· Наявність високопродуктивних та розширених версій процесорів;

· Значна кількість вільно доступних програмних та апаратурних напрацювань;

· Легкість апаратного програмування, в т. ч. і внутрішньосхемного;

· Дешевизна та доступність базових чіпів;

· Наявність спеціалізованих версій контролерів для особливих умов застосування

· Наявність версій контролерів зі зниженим рівнем електромагнітних перешкод;

· Широка популярність серед розробників старшого покоління, як у світі, так і в країнах СНД;

· Підтримка архітектури провідними навчальними закладами світу.

І, нарешті, головна перевага: освоївши базовий чіп сімейства, легко почати працювати з такими обчислювальними монстрами, як мікроконтролери Cygnal, Dallas Semiconductor, Analog Devices, Texas Instruments.

До складу сімейства MCS-51 входить ціла низка мікросхем від найпростіших мікроконтролерів до досить складних. На сьогоднішній день існує понад 200 модифікацій мікроконтролерів сімейства 8051, що випускаються майже 20-ма компаніями. Щороку з'являються нові варіанти представників цього сімейства.

Основними напрямками розвитку є:

· Збільшення швидкодії (підвищення тактової частоти та переробка архітектури);

· Зниження напруги живлення та енергоспоживання;

· Збільшення обсягу ОЗУ і FLASH пам'яті на кристалі з можливістю внутрішньосхемного програмування;

· Введення до складу периферії мікроконтролера складних пристроїв типу системи керування приводами, CAN та USB інтерфейсів тощо.

Мікроконтролери сімейства MCS-51 дозволяють виконувати завдання управління різними пристроями, так і реалізовувати окремі вузли аналогової схеми. Всі мікросхеми цього сімейства працюють з однією системою команд. Більшість з них виконується в однакових корпусах з цоколівкою, що збігається (нумерація ніжок для корпусу). Це дозволяє використовувати для розробленого пристрою мікросхеми різних фірм - виробників без переробки принципової схеми пристрою та програми.

Основними виробниками різновидів 51-го сімейства у світі є фірми Philips, Siemens, Intel, Atmel, Dallas, Temic, Oki, AMD, MHS, Gold Star, Winbond, Silicon Systems та інші.

Характеристики аналогів мікроконтролерів сімейства MCS-51 (Intel 8XC51FA, 8XC51GB, 80С152) з розширеними можливостями наведені у табл. В 1.

Таблиця В.1

ОЗУ ПЗУ РСА АЦП WDT T/C Слід. Канали Особливості
Atmel: AT89C2051
- - - - UART Flash 2 Кб
AT89C4051 - - - - UART Flash 4 Кб
AT89S4D12 128K - - - UART, SPI Flash 4 Кб
DALLAS Semiconductor: DS5000FP
- - - + UART Bootstrap loader
DS5001FP - - - + UART Bootstrap loader
DS8xC520 16K - - + 2xUART 2 DPTR
SIEMENS: C505C
16K - + + UART, CAN 8 DPTR
C515C 64K - + + UART+ SSC+CAN 4 ШИМ, 8 DPTR
Philips: *89C51RA+
- + - + UART 2 DPTR, 4 ур. перер., clock out, Flash 8K
P51XAG1x 8K - - + 2 UART
Intel: 8xC51RA
8K - + + UART 4 рівні IRQ, clock out
8XC196KC 64K 16K - + - UART 3 ШИМ
80C196KB 64K 8K - + - UART ШИМ

Розділ 1. Архітектура сімейства MCS51

8-розрядні однокристальні мікроконтролери сімейства MCS-51 набули великої популярності у розробників мікропроцесорних систем контролю завдяки вдало спроектованій архітектурі. Архітектура мікроконтролера – це сукупність внутрішніх та зовнішніх програмно-доступних апаратних ресурсів та системи команд. Архітектура сімейства MCS-51 значною мірою визначається її призначенням - побудова компактних та дешевих цифрових пристроїв. Мікроконтролери, що виконують всі функції мікроЕОМ за допомогою єдиної мікросхеми, отримали назву однокристальних ЕОМ (ОЕОМ).

Фірма Intel випустила близько 50 моделей на базі операційного ядра мікроконтролера Intel 8051. Одночасно багато інших фірм, таких як Atmel, Philips, розпочали виробництво своїх мікроконтролерів, розроблених у стандарті MCS-51.

загальні характеристики

Основні характеристики сімейства:

· 8-розрядний центральний процесор (ЦП), орієнтований управління виконавчими пристроями;

· ЦП має вбудовану схему 8-розрядного апаратного множення та поділу чисел;

· Наявність у наборі команд великої кількості операцій для роботи з прямоадресованими бітами дає можливість говорити про процесор для роботи з бітовими даними (бульовий процесор);

· Внутрішня (розташована на кристалі) пам'ять програм масочного або репрограмованого типу, що має для різних кристалів об'єм від 4 до 32 Кб, в деяких версіях вона відсутня;

· Не менш ніж 128 байтне резидентне ОЗУ даних, яке використовується для організації, регістрових банків, стеку та зберігання даних;

· Не менше 32-х двонаправлених інтерфейсних ліній (портів), що індивідуально налаштовуються на введення або виведення інформації;

· два 16-бітних багаторежимних лічильника/таймера, що використовуються для підрахунку зовнішніх подій, організації тимчасових затримок та тактування комунікаційного порту;

· Двонаправлений дуплексний асинхронний приймач (UART), призначений для організації каналів зв'язку між мікроконтролером і зовнішніми пристроями з широким діапазоном швидкостей передачі інформації. Є засоби для апаратно-програмного об'єднання мікроконтролерів у пов'язану систему;

· дворівнева пріоритетна система переривань, що підтримує щонайменше 5 векторів переривань від 4-х внутрішніх та 2-х зовнішніх джерел подій;

· Вбудований тактовий генератор.

Структурна схема

Структурна схема контролера представлена ​​на рис.1.1 і складається з наступних основних функціональних вузлів: блоку управління, арифметико-логічного пристрою, блоку таймерів/лічильників, блоку послідовного інтерфейсу та переривань, програмного лічильника, пам'яті даних та пам'яті програм. Двосторонній обмін здійснюється за допомогою внутрішньої 8-розрядної магістралі даних. За такою схемою збудовано практично всі представники сімейства MCS-51. Різні мікросхеми цього сімейства відрізняються лише регістрами спеціального призначення (зокрема і кількістю портів).

Блок керування та синхронізації (Timing and Control)- призначений для вироблення синхронізуючих та керуючих сигналів, що забезпечують координацію спільної роботи блоків ОЕОМ у всіх допустимих режимах роботи. До складу блоку управління входять:

будову формування часових інтервалів;

логіка введення-виведення;

регістр команд;

регістр управління споживанням електроенергії;

дешифратор команд, логіка управління ЕОМ.

Мал. 1.1. Структурна схема контролера I8051.

Пристрій формування часових інтервалівпризначено для формування та видачі внутрішніх синхросигналів фаз, тактів та циклів. Кількість машинних циклів визначає тривалість виконання команд. Практично всі команди ОЕОМ виконуються за один або два машинні цикли, крім команд множення та поділу, тривалість виконання яких становить чотири машинні цикли. Позначимо частоту генератора, що задає через F р. Тривалість машинного циклу дорівнює 12/F г або становить 12 періодів сигналу генератора, що задає. Логіка введення - виводу призначена для прийому та видачі сигналів, що забезпечують обмін інформацією із зовнішніми пристроями через порти введення виведення Р0-Р3.

Реєстр командпризначений для запису та зберігання 8-ми розрядного коду операції команди, що виконується. Код операції, за допомогою дешифратора команд та логіки управління ЕОМ, перетворюється на мікропрограму виконання команди.

Реєстр управління споживанням (PCON)дозволяє зупиняти роботу мікроконтролера для зменшення споживання електроенергії та зменшення рівня перешкод від мікроконтролера. Ще більшого зменшення споживання електроенергії і зменшення перешкод можна досягти, зупинивши генератор мікроконтролера, що задає. Цього можна досягти за допомогою перемикання біт регістру керування споживанням PCON. Для варіанта виготовлення за технологією n-МОП (серія 1816 або іноземних мікросхем, у назві яких у середині відсутня буква "c") регістр керування споживанням PCON містить тільки один біт, що керує швидкістю передачі послідовного порту SMOD, а біти керування споживанням електроенергією відсутні.

Арифметико-логічний пристрій (ALU)являє собою паралельний восьмирозрядний пристрій, що забезпечує виконання арифметичних та логічних операцій. АЛУ складається з:

регістрів акумулятора, регістрів тимчасового зберігання TMP1 та TMP2;

ПЗП констант;

суматора;

додаткового регістру (регістра В);

акумулятора (ACC);

регістру стану програм (PSW).

Реєстр акумулятор та регістри тимчасового зберігання- восьмирозрядні регістри, призначені для приймання та зберігання операндів на час виконання операцій над ними. Ці регістри програмно недоступні.

ПЗУ константзабезпечує вироблення коригуючого коду при подвійно-десятковому поданні даних, коду маски при бітових операціях та коду констант.

Паралельний восьмирозрядний суматорявляє собою схему комбінаційного типу з послідовним переносом, призначену для виконання арифметичних операцій складання, віднімання та логічних операцій складання, множення, нерівнозначності та тотожності.

Реєстр B- восьмирозрядний регістр, який використовується під час операцій множення та поділу. Для інших інструкцій може розглядатися як додатковий надоперативний регістр.

Акумулятор- восьмирозрядний регістр, призначений для прийому та зберігання результату, отриманого при виконанні арифметико-логічних операцій або операцій зсуву

Блок послідовного інтерфейсу та переривань (ПІП)призначений для організації введення - виведення послідовних потоків інформації та організації системи переривання програм. До складу блоку входять:

буфер ПІП;

логіка керування;

регістр управління;

буфер передавача;

буфер приймача;

приймач послідовного порту;

регістр пріоритетів переривань;

регістр дозволу переривань;

логіка обробки прапорів переривань та схема вироблення вектора.

Лічильник команд (Program Counter)призначений для формування поточної 16-розрядної адреси внутрішньої пам'яті програм та 8/16-розрядної адреси зовнішньої пам'яті програм. До складу лічильника команд входять 16-розрядні буфер РС, регістр РС та схема інкременту (збільшення вмісту на 1).

Пам'ять даних (RAM)призначена для тимчасового зберігання інформації, що використовується у процесі виконання програми.

Порти P0, P1, P2, P3є квазидвунаправленными портами введення - виведення та призначені для забезпечення обміну інформацією ОЕОМ із зовнішніми пристроями, утворюючи 32 лінії введення-виведення.

Регістр стану програми (PSW)призначений для зберігання інформації про стан АЛП під час виконання програми.

Пам'ять програм (EPROM)призначена для зберігання програм і є постійним запам'ятовуючим пристроєм (ПЗУ). У різних мікросхемах застосовуються маскові, що стираються ультрафіолетовим випромінюванням або FLASH ПЗУ.

Реєстр покажчика даних (DPTR)призначений для зберігання 16-розрядної адреси зовнішньої пам'яті даних.

Покажчик стека (SP)є восьмирозрядний регістр, призначений для організації особливої ​​області пам'яті даних (стека), в якій можна тимчасово зберегти будь-яку комірку пам'яті.

1.3 Призначення висновків мікроконтролера 8051(Рис. 1.2)

· U ss - потенціал загального дроту ("землі");

· U cc - основна напруга живлення +5 В;

· X1, X2 – висновки для підключення кварцового резонатора;

· RST - вхід загального скидання мікроконтролера;

· PSEN - дозвіл зовнішньої пам'яті програм, що видається тільки при зверненні до зовнішнього ПЗУ;

· ALE – строб адреси зовнішньої пам'яті;

· ЕА - відключення внутрішньої програмної пам'яті; рівень 0 на цьому вході змушує мікроконтролер виконувати програму тільки із зовнішнього ПЗП; ігноруючи внутрішнє (якщо останнє є);

Мал. 1.2. Призначення висновків 8051.

· P1 - восьмибітний квазідвунаправлений порт вводу/виводу, кожен розряд порту може бути запрограмований як на введення, так і на виведення інформації, незалежно від стану інших розрядів;

· P2 - восьмибітний квазідвунаправлений порт, аналогічний Р1, висновки цього порту використовуються для видачі адресної інформації при зверненні до зовнішньої пам'яті програм або даних (якщо використовується 16-бітова адресація останньої). Крім того, висновки порту використовуються при програмуванні для введення в мікроконтролер старших розрядів адреси;

· РЗ - восьмибітний квазідвунаправлений порт, аналогічний Р1, висновки цього порту можуть виконувати ряд альтернативних функцій, які використовуються при роботі таймерів, порту послідовного введення-виведення, контролера переривань, та зовнішньої пам'яті програм та даних;

· P0 - мультиплексований восьмибітний двонаправлений порт введення-виведення інформації, через цей порт у різні моменти часу виводяться молодший байт адреси та дані.

Організація пам'яті

Вся серія MCS-51 має гарвардську архітектуру, тобто окремі адресні місця пам'яті програм і даних. Структура пам'яті зображено на рис. 1.3.

Об'єм внутрішньої (резидентної) пам'яті програм (ROM, EPROM або OTP ROM), що розташовується на кристалі, залежно від типу мікросхеми може становити 0 (ROMless), 4К (базовий кристал), 8К, 16К або 32К. За потреби користувач може розширювати пам'ять програм встановленням зовнішнього ПЗП. Доступ до внутрішнього чи зовнішнього ПЗП визначається значенням сигналу на виведенні ЕА (External Access):

EA = V cc (напруга живлення) - доступ до внутрішнього ПЗП;

EA = V ss (потенціал землі) – доступ до зовнішнього ПЗУ.

Для кристалів без ПЗП(ROMless) висновок ЕА повинен бути постійно підключений до V ss.

Мал. 1.3. Організація пам'яті сімейства MCS-51

Строб читання зовнішнього ПЗП - (Program Store Enable) генерується при зверненні до зовнішньої пам'яті програм і є неактивним під час звернення до ПЗП, розташованого на кристалі. Область нижніх адрес пам'яті програм використовується системою переривань. Архітектура базової мікросхеми 8051 забезпечує підтримку п'яти джерел переривань:

· двох зовнішніх переривань;

· двох переривань від таймерів;

· Переривання від послідовного порту.

На рис. 1.4 зображено карту нижньої області програмної пам'яті.

Мал. 1.4. Карта нижньої області програмної пам'яті

Пам'ять програм (ПЗП)

У мікроконтролерів сімейства 8051, пам'ять програм і пам'ять даних є самостійними та незалежними один від одного пристроями, адресованими різними командами та сигналами, що управляють.

Об'єм вбудованої пам'яті програм, розташованої на кристалі мікроконтролера 8051 дорівнює 4 Кбайт (у сімействі до 32). При зверненні до зовнішньої пам'яті програм всі мікроконтролери сімейства 8051 завжди використовують 16-розрядну адресу, що забезпечує доступ до 64 Кбайт ПЗУ. Мікроконтролер звертається до програмної пам'яті під час читання коду операції та операндів (використовуючи лічильник команд PC), і навіть під час команд копіювання байта з пам'яті програм в акумулятор. При виконанні команд копіювання даних адресація осередку пам'яті програм, з якої будуть прочитані дані, може здійснюватися з використанням лічильника PC, так і спеціального двобайтового регістра-покажчика даних DPTR.

Пам'ять даних (ОЗП)

Об'єм розташованої на кристалі пам'яті даних – 128 байт. Об'єм зовнішньої пам'яті даних може досягати 64 Кбайт. Перші 32 байти організовані в чотири банки регістрів загального призначення, що позначаються відповідно банк 0 - банк 3. Кожен з них складається з восьми регістрів R0-R7. У будь-який момент програмі доступний при реєстровій адресації тільки один банк регістрів, номер якого міститься в третьому і четвертому бітах слова стану програми PSW.

Адреси бітової області пам'яті мікроконтролера 8051

Таблиця 1.1

Адреса байта (Hex) Адреси бітів за розрядами
D7 D6 D5 D4 D3 D2 D1 D0
2F 7F 7E 7D 7C 7B 7A
2E
2D 6F 6E 6D 6C 6B 6A
2C
2B 5F 5E 5D 5C 5B 5A
2A
4F 4E 4D 4C 4B 4A
3F 3E 3D 3C 3B 3A
2F 2E 2D 2C 2B 2A
1F 1E 1D 1C 1B 1A
0F 0E 0D 0C 0B 0A
20h

адресний простір, що залишився, може конфігуруватися розробником на свій розсуд: в ньому можна розмістити стек, системні та користувацькі області даних. Звернення до осередків пам'яті даних можливе двома способами. Перший спосіб – пряма адресація осередку пам'яті. У цьому випадку адреса осередку є операндом відповідної команди. Другий спосіб - непряма адресація за допомогою регістрів-покажчиків R0 або R1: перед виконанням відповідної команди в один з них має бути занесена адреса осередку, до якого необхідно звернутися.

Для звернення до зовнішньої пам'яті даних використовується лише непряма адресація за допомогою регістрів R0 і R1 або 16-розрядного регістра-покажчика DPTR.

Частина пам'яті даних є бітову область, в ній є можливість за допомогою спеціальних бітових команд адресуватися до кожного розряду осередків пам'яті. Адреса прямо адресованих бітів може бути записаний також у вигляді (АдресБайту). (Розряд). Відповідність цих двох способів адресації можна визначити за таблицею. 1.1.

Архітектура мікроконтролерів

Розуміння архітектури мікроконтролерів є ключовим щодо мов програмування типу асемблер. Структура асемблера, формат його команд, адресація операндів тощо повністю визначаються архітектурою. Метою вивчення архітектури є:

· Виявлення набору доступних для програмування регістрів, їх функціонального призначення та структури;

· розуміння організації оперативної пам'яті та порядку її використання;

· Ознайомлення з типами даних;

· Вивчення формату машинних команд;

· З'ясування організації обробки переривань.

Архітектура сімейства MCS-51 значною мірою визначається її призначенням - побудова компактних та дешевих цифрових пристроїв. Усі функції МК реалізуються з допомогою єдиної мікросхеми. До складу сімейства MCS-51 входить ціла низка мікросхем від найпростіших мікроконтролерів до досить складних. Мікроконтролери сімейства MCS-51 дозволяють виконувати завдання управління різними пристроями, так і реалізовувати окремі вузли аналогової схеми. Всі мікросхеми цього сімейства працюють з однією і тією ж системою команд, більшість з них виконується в однакових корпусах з цоколівкою, що збігається (нумерація висновків для корпусу). Це дозволяє використовувати для розробленого пристрою мікросхеми різних фірм - виробників (таких як Intel, Dallas, Atmel, Philips і т.д.) без переробки принципової схеми пристрою та програми.

MCS-51 виконаний за Гарвардською архітектурою, де адресні простори пам'яті програм та даних розділені.

Структурна схема контролера представлена ​​на рис.2.3 і складається з наступних основних функціональних вузлів: блоку управління, арифметико-логічного пристрою, блоку таймерів/лічильників, послідовного інтерфейсу та переривань, програмного лічильника (лічильника команд), пам'яті даних та пам'яті програм.

Двосторонній обмін здійснюється за допомогою внутрішньої 8-розрядної магістралі даних. Розглянемо докладніше призначення кожного блоку. За такою схемою збудовано практично всі представники сімейства MCS-51. Різні мікросхеми цього сімейства відрізняються лише регістрами спеціального призначення (зокрема і кількістю портів). Система команд всіх контролерів сімейства MCS-51 містить 111 базових команд із форматом 1, 2 або 3 байти і не змінюється при переході від однієї мікросхеми до іншої. Це забезпечує чудову переносимість програм із однієї мікросхеми на іншу.

Блок управління та синхронізації(Timing and Control) призначений для вироблення синхронізуючих та керуючих сигналів, що забезпечують координацію спільної роботи блоків ОЕОМ у всіх допустимих режимах її роботи. До складу блоку управління входять:


  • пристрій формування часових інтервалів,
  • комбінаційна схема введення-виведення,
  • регістр команд,
  • командний дешифратор.

Вхідні та вихідні сигнали блоку управління та синхронізації:

1 PSEN- Роздільна здатність програмної пам'яті;

2 ALE- Вихідний сигнал дозволу фіксації адреси;

3 PROG- Сигнал програмування;

4 EA– блокування роботи із внутрішньою пам'яттю;

5 VPP- Напруга програмування;

6 RST- Сигнал загального скидання.

Пристрій формування часових інтервалів необхідний синхронізації послідовності станів ЦП, утворюють машинний цикл, і навіть для правильної роботи всіх внутрішніх клямок і вихідних буферів портів. Машинний цикл складається з шести послідовних станів (States) від S1 до S6, кожен з яких, у свою чергу, поділяється на дві фази:

фазу 1 (Phase 1 - P1) та фазу 2 (Phase 2 - P2). Таким чином, машинний цикл може бути визначений як послідовність часових інтервалів S1P1, S1P2, S2P1, ..., S6P2. Тривалість фази дорівнює періоду прямування тактових імпульсів, тому машинний цикл займає 12 тактових періодів.

Кількість машинних циклів визначає тривалість виконання команд. Практично всі команди виконуються за один або два машинні цикли, крім команд множення та поділу, тривалість виконання яких становить чотири машинні цикли. Логіка введення - виводу призначена для прийому та видачі сигналів, що забезпечують обмін інформацією із зовнішніми пристроями через порти введення виведення Р0-Р3.

Реєстр командпризначений для запису та зберігання 8-ми розрядного коду операції команди, що виконується. Код операції, за допомогою дешифратора команд та логіки управління ЕОМ, перетворюється на мікропрограму виконання команди.

Рис. 2.3. Структурна схема однокристального мікроконтролера Intel 8051

(родина MCS-51)

Арифметико-логічний пристрій(ALU) являє собою паралельний восьмирозрядний пристрій, що забезпечує виконання арифметичних та логічних операцій. АЛУ складається з:

  • регістрів тимчасового зберігання -TMP1 і TMP2,
  • ПЗУ констант,
  • суматора,
  • додаткового регістру - регістра,
  • акумулятора - ACC,
  • регістру слова стану програм (регістр прапорів) - PSW.

Регістри тимчасового зберігання TMP1, TMP2- восьмирозрядні регістри, призначені для приймання та зберігання операндів на час виконання операцій над ними. Ці регістри програмно недоступні.

ПЗУ константзабезпечує вироблення коригуючого коду при подвійно-десятковому поданні даних, коду маски при бітових операціях та коду констант.

Паралельний восьмирозрядний суматорявляє собою схему комбінаційного типу з послідовним переносом, призначену для виконання арифметичних операцій складання, віднімання та логічних операцій складання, множення, нерівнозначності та тотожності.

Реєстр B- восьмирозрядний регістр, який використовується під час операцій множення та поділу. Для інших інструкцій може розглядатися як додатковий надоперативний регістр.

Акумулятор- восьмирозрядний регістр, призначений для прийому та зберігання результату, отриманого при виконанні арифметико-логічних операцій або операцій зсуву.

Регістр стану програм PSW (Programm Status Word)призначений для зберігання слова стану команд, що виконуються. При виконанні багатьох команд ALU формується ряд ознак операції (прапорів), які фіксуються в регістрі слова стану програми (PSW). У табл. 1 наводиться перелік прапорів PSW, даються їх символічні імена та описуються умови формування.

Блок переривань та послідовного інтерфейсу - UART (Universal Asynchronous Receiver/Transmitter)призначений для організації введення - виведення послідовних потоків інформації та організації системи переривання програм.

За визначенням переривання означає тимчасове припинення основного процесу обчислень виконання деяких запланованих чи незапланованих дій, викликаних роботою апаратури чи програми.

Ці дії можуть мати сервісний характер, бути запитами з боку програми користувача виконання обслуговування або бути реакцією на позаштатні ситуації.

Система команд ОМЕОМ надає великі можливості обробки даних, забезпечує реалізацію логічних, арифметичних операцій, а також управління режимом реаліного часу. Реалізована побітова, потетрадна (4 біти), побайтова (8 біт) та 16-розрядна обробка даних.

БІС сімейства MCS-51 - 8-розрядна ОМЕОМ: ПЗУ, ОЗУ, регістри спеціального призначення, АЛУ та зовнішні шини мають байтову організацію. Двобайтові дані використовуються тільки регістром-покажчиком (DPTR) та лічильником команд (РС). Слід зазначити, що регістр-покажчик даних може бути використаний як двобайтовий регістр DPTR або два однобайтових регістра спеціального призначення DPH і DPL. Лічильник команд завжди використовується як двобайтовий регістр.

Набір команд ОМЕОМ має 42 мнемонічні позначення команд для конкретизації 33 функцій цієї системи.

Синтаксис більшості команд асемблерної мови складається з мнемонічного позначення функції, завжди за яким йдуть операнди, що вказують методи адресації та типи даних. Різні типи даних чи режими адресації визначаються встановленими операндами, а чи не змінами мнемонических позначень.

Систему команд умовно можна розбити на п'ять груп:

Існують такі типи адресації операндів-джерел:

  • Непрямо-реєстрова адресація за сумою базового та індексного регістрів

Таблиця позначень та символів, що використовуються в системі команд

Позначення, символ Призначення
А Акумулятор
Rn Реєстри поточного обраного банку регістрів
r Номер завантажуваного регістру, вказаного у команді
direct Прямо адресована 8-бітова внутрішня адреса осередок даних, який може бути осередком внутрішнього ОЗУ даних (0-127) або SFR (128-255)
@Rr Непрямо адресований 8-бітовий осередок внутрішнього ОЗУ даних
data8 8-бітове безпосереднє дане, що входить до КОП
dataH Старші біти (15-8) безпосередніх 16-бітових даних
dataL Молодші біти (7-0) безпосередніх 16-бітових даних
addr11 11-бітова адреса призначення
addrL Молодші біти адреси призначення
disp8 8-бітовий байт зміщення зі знаком
bit Біт із прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або SFR
a15, a14...a0 Біти адреси призначення
(Х) Вміст елемента Х
((Х)) Вміст за адресою, що зберігається в елементі Х
(Х)[M] Розряд М елемента Х

+
-
*
AND
OR
XOR
/X
Операції:
додавання
віднімання
множення
поділу
логічного множення (операція І)
логічного складання (операція АБО)
додавання за модулем 2 (що виключає АБО)
інверсія елемента Х

Мнемонічні позначення функцій однозначно пов'язані з конкретними комбінаціями способів адресації та типами даних. Загалом у системі команд можливо 111 таких поєднань. У таблиці наведено перелік команд, упорядкованих за абеткою.

Мнемоніка Функція Прапори
Команда ACALL Абсолютний виклик підпрограми
Додавання AC, C, OV
Додавання з перенесенням AC, C, OV
Команда AJMP Абсолютний перехід
Логічне "І"
Логічне "І" для змінних-бітів C
Порівняння та перехід, якщо не одно C
Команда CLR A Скидання акумулятора
Команда CLR Скидання біта C, bit
Команда CPL A Інверсія акумулятора
Команда CPL Інверсія біта C, bit
Команда DA A Десяткова корекція акумулятора для складання AC, C
Команда DEC<байт> Декремент
Команда DIV AB Поділ C, OV
Команда DJNZ<байт>, <смещение> Декремент і перехід, якщо не дорівнює нулю
Команда INC<байт> Інкремент
Команда INC DPTR Інкремент покажчика даних
Команда JB , Перехід, якщо біт встановлено
Команда JBC , Перехід, якщо біт встановлений і скидання цього біта
Команда JC Перехід, якщо перенесення встановлено
Команда JMP @A+DPTR Непрямий перехід
Команда JNB , Перехід, якщо біт не встановлено
Команда JNC Перехід, якщо перенесення не встановлено
Команда JNZ Перехід, якщо вміст акумулятора не дорівнює нулю
Команда JZ Перехід, якщо вміст акумулятора дорівнює 0
Команда LCALL Довгий виклик
Команда LJMP Довгий перехід
Переслати змінну-байт
Переслати біт даних C
Команда MOV DPTR, #data16 Завантажити покажчик даних 16-бітовою константою
Команда MOVC A, @ A + ( ) Переслати байт із пам'яті програм
Переслати у зовнішню пам'ять (із зовнішньої пам'яті) даних
Не працює