Контакти

Мікроконтролери MCS 51 структурна схема. Мікроконтролери сімейства mcs51. Режим читання порту

Система команд ОМЕОМ надає великі можливості обробки даних, забезпечує реалізацію логічних, арифметичних операцій, а також управління режимом реаліного часу. Реалізована побітова, потетрадна (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 + ( ) Переслати байт із пам'яті програм
Переслати у зовнішню пам'ять (із зовнішньої пам'яті) даних

Базова версія MCS–51 Коротка інформація. Сучасні 8-розрядні мікроконтролери (МК) мають такі ресурси управління в режимі реального часу, для отримання яких раніше використовувалися дорогі багатокристальні компонування у вигляді окремих плат мікроЕОМ, а саме:

● мають достатню ємність пам'яті, фізичний та логічний її поділ на пам'ять програм та пам'ять даних (гарвардську архітектуру) та систему команд, орієнтовану на виконання алгоритмів управління;

● включають всі пристрої (процесор, ПЗУ, ОЗУ, порти вводу–вывода, систему переривань, засоби обробки бітової інформації та інших.), необхідні реалізації мікропроцесорної системи управління мінімальної конфігурації. У 70-ті роки минулого століття фірмою Intelрозроблено та освоєно промисловий випуск сімейства 8-розрядних мікроконтролерів MCS-48, об'єднаних рядом загальних ознак (розрядністю, системою команд, набором основних функціональних блоків та ін.). Базова версія цього сімейства включає:

● 8-розрядний процесор;

● внутрішню пам'ять програм (1/2/4К байт);

● внутрішню пам'ять даних (64/128/256 байт);

● до 27 внутрішніх та 16 зовнішніх ліній введення-виводу;

● один 8-розрядний таймер-лічильник;

● однорівневу систему переривань із двома джерелами запитів. У 1980 р. тією ж фірмою було розроблено нове сімейство восьмирозрядних мікроконтролерів MCS-51, яке сумісне з архітектурою сімейства MCS-48, але має ширші можливості.

Архітектура сімейства MCS-51 виявилася настільки вдалою, що й досі є одним із стандартів 8-розрядних МК. Тому об'єктом вивчення обрані МК цього сімейства, що набули широкого поширення в порівняно простих системах управління.

Для сімейства MCS–51 розроблено різні засоби підготовки програм (компілятори, апаратно–програмні емулятори та ін.) та є велика кількість бібліотек стандартних підпрограм. До складу сімейства входять різноманітні модифікації мікросхем (версії кристалів) мікроконтролерів. У статтях цього розділу досить докладно розглядається базова версія мікроконтролерів сімейства MCS-51 (мікросхема 8051 відповідає вітчизняний аналог КP1816ВЕ51), найбільш проста в структурно-функціональному плані і з погляду розуміння.

Наступні серії мікросхем, зберігаючи сумісність з базовою версією, відрізняються від неї покращеною технологією виготовлення, електричними параметрами, додатковими апаратними засобами та функціональними можливостями. Структурно-функціональним особливостям наступних модифікацій мікросхем сімейства MCS-51 присвячені такі статті.
Узагальнена структурна схема MCS-51. До складу МК, узагальнена структурна схема якого наведено на рис. 7.1.1, входять:

● 8-розрядний центральний процесор ЦП, що складається з АЛУ, пристрої керування УУта формувача адреси ФА;

● масочне ПЗУ ємністю 4К байта для зберігання програм;

● ОЗУ ємністю 128 байт для зберігання даних;

● чотири програмовані порти Р0–Р3 для введення–виведення інформації;

● блок послідовного інтерфейсу БПІ для обміну інформацією із зовнішніми пристроями по двопровідній лінії;

● блок таймерів/лічильників БТ/С для підтримки режиму реального часу;

● блок переривань БП для організації переривань виконуваних програм. Ці засоби утворюють резидентнучастину мікроконтролера, розміщену безпосередньо на кристалі. До складу МК входить велика кількість регістрів, які віднесені до окремих функціональних блоків та на схемі не показані.

На схемі також не показані кола управління. Двосторонній обмін інформацією між блоками здійснюється за внутрішньою 8-розрядною шині данихШД-8.

За внутрішньою 16-розрядною шині адресиША–16 сформована в ЦП адреса виводиться в ПЗП (12 розрядів адреси) та в ОЗП (8 молодших розрядів).

При використанні зовнішньої пам'яті порт Р0 виводяться 8 молодших розрядів адреси і порт P2 - 3 чи 8 старших розрядів.

Для логічного розширення інтерфейсу використовують суміщення функцій ліній портів. Як приклад на рис. 7.1.1 пунктиром показано лінії порту Р3, що виконують альтернативніфункції передачі сигналів, що керують, про призначення яких буде сказано нижче. Для створення внутрішнього тактового генератора до висновків мікросхеми МК підключаються кварцовий резонатор та два конденсатори (рис. 7.1.1). Замість внутрішнього тактового генератора для синхронізації можна використовувати зовнішнє джерело коливань. Умовне графічне позначення мікросхеми МК наведено на рис. 7.1.2, позначення та призначення висновків - у табл. 7.1.1. Розглянемо функціональні блоки МК та принцип їх роботи. Арифметично-логічне пристрій. Арифметично-логічний пристрій призначений для виконання арифметичних (включаючи множення та розподіл) та логічних операцій над восьмирозрядними операндами, А також операцій логічного зсуву, обнулення, установки та ін. Структурна схема АЛУ наведена на рис. 7.1.3.

До складу АЛУ входять

● паралельний восьмирозрядний суматор SМ комбінаційного типу з послідовним переносом, що виконує арифметичні (додавання та віднімання) та логічні (додавання, множення, нерівнозначність і тотожність) операції;

акумулятор A,забезпечує функції основного арифметичного регістру;

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

регістри(програмно недоступні) тимчасового зберіганняРВХ1, РВХ2, призначені для приймання та зберігання операндів на час виконання операції;

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

регістр слова стану програми PSW, що фіксує стан АЛП після виконаної операції. У табл. 7.1.2 наведено відомості про призначення бітів окремих розрядів регістру PSW. Пристрій керування. Пристрій керування (УУ) центрального процесора призначенодля координації спільної роботи всіх вузлів МК за допомогою синхроімпульсів, що виробляються, і керуючих сигналів. До його складу входять (рис. 7.1.4):

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

Кожен машинний цикл має шість станів S1–S6, A кожен стан включає в себе дві фази P1, P2, тривалість яких становить період коливань тактового генератора T0SC.

Тривалість машинного циклу дорівнює 12T 0SC. Усі машинні цикли однакові, починаються із фази S1P1 і закінчуються фазою S6P2.

Крім синхроімпульсів пристрій синхронізації в кожному машинному циклі формує два (іноді один) сигналу стробування молодшого байта адреси ALE у вигляді позитивного імпульсу у фазах S1P2-S2P1 та S4P2-S5P1. Тимчасові діаграми на рис. 7.1.5 ілюструють організацію машинних циклів;

● регістр команд РК, дешифратор командДК і ПЛМ, що дозволяють у кожному машинному циклі сформувати набір мікрооперацій відповідно до мікропрограми виконуваної команди;

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

● регістр PCON, що має єдиний задіяний біт SMOD у позиції PCON.7 для подвоєння швидкості передачі через послідовний порт. Інші біти зарезервовані для подальшого використання.
Формувач адреси. Формувач адреси (ФА), або лічильник команд РС, призначенийдля формування поточної 16-розрядної адреси програмної пам'яті та 8/16-розрядної адреси зовнішньої пам'яті даних. До його складу входять (рис. 7.1.6):

● 16-розрядний буферБ, здійснює зв'язок між 8-розрядною шиною даних ШД і 16-розрядною внутрішньою шиною (ВШ) формувача адреси;

● схема інкременту СІ для збільшення значення поточної адреси пам'яті програм на одиницю;

● регістр для зберігання поточної адреси команд РТА, що надходить із СІ;

● регістр покажчика даних DPTR , що складається з двох 8-розрядних регістрів DPH і DPL. Він служить для зберігання 16-розрядної адреси зовнішньої пам'яті даних і може бути використаний як два незалежні програмно доступні РОН;

● регістр формувача адреси РФА для зберігання виконавчої 16-розрядної адреси пам'яті програм або 8/16-розрядної адреси зовнішньої пам'яті даних. Цей регістр використовується для передачі даних через порт Р0 в зовнішні пристрої під час виконання команд MOVX @Rm, A і MOVX @DPRT, A.

Пам'ять даних. Пам'ять даних призначенадля прийому, зберігання та видачі інформації, що використовується у процесі виконання програми. Внутрішня (резидентна) пам'ять (рис. 7.1.7) даних складається з ОЗП ємністю 128 байт, покажчика стека SP, регістра адресиОЗУ РА та дешифратораДш. Покажчик стека SP являє собою 8-розрядний регістр, призначений для прийому та зберігання адреси комірки стека, до якої було останнє звернення. Після скидання в покажчику стека встановлюється адреса 07Н, що відповідає початку стека з адресою 08Н. Регістр адреси РА спільно з дешифратором Дш дозволяє здійснити доступ до необхідної комірки пам'яті, що містить байт або біт інформації.

У МК передбачено можливість збільшення обсягу пам'яті даних до 64 Кбайт шляхом підключення зовнішніх пристроїв.Як приклад на рис. 7.1.8 показано сторінкову організацію зовнішньої пам'яті даних ВПД ємністю 2К байт з використанням команд типу MOVX @ Rm(m = 0; 1). При цьому порт Р0 працює як мультиплексована шина адресу/дані, три лінії порту P2 використовуються для адресації сторінки зовнішнього ОЗП, а решта п'яти ліній можуть бути задіяні як лінії введення-виведення.
На рис. 7.1.9 наведено часові діаграми циклів читання та запису при роботі МК із зовнішнім ОЗУ. На діаграмах зазначено:

● РСН – старший байт лічильника команд PC;

● DPL, DPH - молодший та старший байти регістру покажчика даних DPTR, який використовується як регістр для непрямої адресації в командах MOVX @DPTR,A та MOVX A,@DPTR;

● P2 SFR - засувки порту P2;

● Rm (m = 0, 1) - регістри, що використовуються в командах MOVX @Rm, A та MOVX A, @Rm як регістри непрямої адреси;

● Z – високоомний стан;

● D - період, протягом якого дані з порту Р0 вводяться в мікроконтролер. Пам'ять програм. Пам'ять програм призначена для зберігання програм, має свій (окремо від пам'яті даних) адресний простір і доступна лише читання. До її складу входить дешифратор Дш та ПЗП (рис. 7.1.10). Для адресації пам'яті програм використовується 16-розрядний лічильник РС, тому його максимальна ємність становить 64К байта. Внутрішня пам'ять програм складається з ПЗУ ємністю 4К байт та 12-розрядного дешифратора. Зовнішня пам'ять підключається за схемою рис. 7.1.11. Якщо на висновок EA МК подається 0 В (як показано на рис. 7.1.11), внутрішня пам'ять програм відключається. Усі звернення до пам'яті розпочинаються з адреси 0000h. При підключенні виведення ¯ЕА до джерела живлення звернення до внутрішньої пам'яті програм за адресами 0000h–FFFFh та до зовнішньої пам'яті програм за адресами 0FFFh–FFFFh відбувається автоматично.

Для читання зовнішньої пам'яті програм МК виробляється сигнал PSEN. При роботі з внутрішнім пам'яттю сигнал читання не використовується. При зверненнях до зовнішньої пам'яті програм завжди формується 16-розрядна адреса. Молодший байт адреси передається через порт Р0 у першій половині машинного циклу і фіксується по зрізу строба АLЕ у регістрі У другій половині циклу порт Р0 використовується для введення в МК байта даних із зовнішньої пам'яті.

Старший байт адреси передається через порт P2 протягом усього часу звернення до пам'яті.

Тимчасові діаграми циклів читання та запису під час роботи МК із зовнішнім ОЗУ наведено на рис. 7.1.12.
На діаграмах зазначено:

● PCL OUT – видача молодшого байта лічильника команд PC;

● РСН OUT – видача старшого байта лічильника команд PC;

● DPH - старший байт регістру покажчика даних DPTR, який використовується як регістр для непрямої адресації в командах MOVX @DPTR,A та MOVX A,@DPTR;

● P2 SFR - засувки порту P2;

● INS IN – введення байта інструкції (команди) з пам'яті програм;

● ADDR OUT - видача молодшого байта адреси зовнішньої пам'яті даних з регістрів Rm (m = 0, 1) або з регістра DPL (молодшого регістра DPTR). Порти введення-виводу. Призначення портів.Порти Р0, P1, P2, Р3 призначенідля обміну інформацією між МК та зовнішніми пристроями, A також для виконання наступних функцій:

● через порт Р0 виводиться молодший байт адреси А7…A0; виводиться з МК та вводиться в МК байт даних при роботі із зовнішньою пам'яттю програм та зовнішньою пам'яттю даних (з поділом у часі);

● через порт P2 виводиться старший байт адреси A15…А8 під час роботи із зовнішньою пам'яттю програм та зовнішньої пам'яттю даних (тільки під час використання команд MOVX A,@DPTR і MOVX @DPTR,A);

● лінії порту Р3 можуть бути задіяні на виконання альтернативних функцій, якщо фіксатор-засувку цієї лінії занесена 1, в іншому випадку на виведенні лінії фіксується 0. Альтернативні функції висновків порту P3 наведені в табл. 7.1.3.

Схемні особливості портів

На рис. 7.1.13 показані схеми для одного каналу кожного з портів МК, що включає:

● засувку для фіксації біта даних, що приймається;

● вихідний підсилювальний каскад(драйвер);

● вузол зв'язки звихідним каскадом (крім P2);

● ланцюг для передачі біта даних з боку виведення порту, що складається з буферів В2 та В3 (для порту Р4). Засувкою служить D-тригер, що тактується внутрішнім сигналом «Запис у клямку». Біт даних з прямого виходу D-тригера може бути прочитаний програмно через буфер В1 сигналом «Читання засувки» на лінію внутрішньої шини даних (ШД) МК.

Вихідний каскадпорту Р0 являє собою інвертор, особливості якого проявляються в тому, що транзистор навантаження VT2 відкривається тільки при зверненнях до зовнішньої пам'яті (при передачі через порт адреси і даних). У всіх інших режимах транзистор навантаження закритий. Тому для використання Р0 (рис. 7.1.13, а) як вихідний порт загального призначення до його висновків необхідно підключити зовнішні навантажувальні резистори. При записі 1 у клямку порту інверторний транзистор VT1 замикається і зовнішній висновок порту Р0.Х переводиться у високоомний стан. У цьому режимі виведення порту Р0.Х може бути входом. Якщо порт Р0 використовується як порт введення/виводу загального призначення, кожен із його висновків Р0.Х може незалежно від інших працювати як вхід або як вихід. Вихідні каскадипортів P1, P2, Р3 (рис. 7.1.13, б, в, г)виконані за схемами інверторів з внутрішнім резистором навантаження, в якості якого використаний транзистор VT2.

Для зменшення часу перемикання при переході виводів портів зі стану 0 до стану 1 паралельно транзистору навантаження VT2 введений додатковий транзистор VT3. Транзистор VT3 за допомогою елементів у ланцюгу затвора відмикається на час, що дорівнює двом періодам коливань задає кварцового генератора (протягом фаз S1P1, S2P2 машинного циклу). Вихідні каскадипортів Р0, P2 (рис. 7.1.13, A, в) за допомогою мультиплексора MX можуть бути підключені або до засувок, або до внутрішніх шин «Адреса/дані» і «Адреса». Вихідний каскад порту P1 (рис. 7.1.13, 6) постійно підключений до клямки.

Якщо висновок порту Р3 є виходом і його клямка містить 1, його вихідним каскадом управляє апаратно внутрішній сигнал «Альтернативна функція виходу», який би виконання відповідної альтернативної функції, тобто. на зовнішньому виведенні формується один із сигналів WR, RD або RxD. Якщо ж виведення порту задіяний на вхід, то альтернативний сигнал (TxD, INT0, INT1, Т0, Т1), що надходить на нього, передається на внутрішню лінію «Альтернативна функція входу».

Режим запису порту.

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

Режим читання порту

Команди читання портів зчитують інформацію безпосередньо із зовнішніх контактів висновків порту або з виходів клямок. У першому випадку біт даних із виведення порту зчитується програмно через буфер В2 сигналом «Читання висновків» на лінію внутрішньої шини даних (ШД) МК. Зазначимо, що сигнали "Запис у клямку", "Читання клямки", "Читання висновків" виробляються апаратно при виконанні відповідних команд.

У другому випадку реалізується так званий режим "Читання-Модифікація-Запис", в якому команда зчитує сигнал стану засувки, при необхідності модифікує його і потім записує назад у клямку. Режим "Читання-Модифікація-Запис" реалізується при виконанні наступних команд: ANL, ORL, XRL, JBC; CPL; INC; DEC; DJNC; MOV PX, Y; CLR PX.Y; SETB PX,Y.

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

В даний час різними фірмами випускається безліч модифікацій та аналогів цього сімейства, як фірмою 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В

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

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

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

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

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

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

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

Архітектура сімейства 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)призначений для організації введення - виведення послідовних потоків інформації та організації системи переривання програм.

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

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

Опитування стану системи переривань проводиться в кінці кожного машинного циклу у фазі S5P2, за винятком команд RETI та будь-яких команд із зверненням до регістрів IE та IP. Від моменту фіксації запиту на переривання до обслуговування переривання потрібно від 38 до 86 періодів частоти fOSC залежно від фази надходження запиту та числа машинних циклів команди, під час виконання якої надійшов запит.

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

стартова адреса (вектор переривання):

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

Переривання таймера/лічильника ТС0.

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

Переривання таймера/лічильника ТС1.

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

2.7. Методи адресації та система команд сімейства MCS-51

Система команд сімейства MCS-51 орієнтована на організацію гнучкого введення-виведення даних через універсальні порти P0...P3 та первинну обробку інформації. Особливу увагу приділено операціям з бітами та передачі управління за їх значенням. Команди, що виконують такі операції, складають численну групу і утворюють разом із відповідними апаратними засобами так званий «бульовий процесор» у складі архітектури MCS-51.

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

2.7.1. Методи адресації

Кожна команда повідомляє процесору виконувану операцію та методи доступу до операндів. Код команди має кілька полів, які мають певне функціональне призначення. Найважливішими полями будь-якої команди є код операції (КОП), що визначає дію команди, та адресна частина. Поля адресної частини містять інформацію про адреси операндів та результат операції, а в деяких випадках інформацію про адресу наступної команди.

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

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

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

Нижче наведено основні методи адресації, що використовуються у системі команд сімейства MCS-51.

Неявна адресація. У команді не міститься явних вказівок про адресу операнда, що бере участь в операції, або адресу, за якою міститься результат операції, але ця адреса мається на увазі. У командах найчастіше неявно адресується акумулятор як приймач результату операції. Наприклад, результат складання вмісту акумулятора (A) і регістра R1 поточного банку даних командою ADD A, R1 записується в акумулятор, що неявно адресується. Вся вказана команда займає в пам'яті один байт, у той час як адреса лише акумулятора (8Eh області SFR) містить один байт.

Безпосередня адресація. У полі адреси команди містить

житься не адреса операнда, а сам операнд. На безпосередню адресацію вказує спеціальний # символ перед числом. Наприклад, командою MOV A,#15h шістнадцяткове число 15 (другий байт команди) завантажується в акумулятор. У системі команд безпосередня адресація позначена як #data, де data – число

(Data = 00h ... FFh).

Пряма адресація. У полі адреси команди вказана пряма адреса осередку пам'яті даних, в якій знаходиться або куди заноситься операнд. Наприклад, командою MOV A,15h вміст осередку DSEG з адресою 15h завантажується в акумулятор. Осередок пам'яті має пряму адресацію, а акумулятор - неявну. Залежно від місцезнаходження адресованого операнда, пряма адресація поділяється на пряму реєстрову та абсолютну.

Пряма реєстрова адресація. У полі адреси команди вказана пряма адреса регістру поточного реєстрового банку. Реєстрів у кожному банку вісім, і їх адресації необхідний трехбитовый прямий адресу. У мнемоніці команд регістр, що адресується, позначений Rn, де n=0...7. Усі поля команди уміщаються в один байт. Таку адресацію називають короткою. Наприклад, MOV R4, R1.

Пряма абсолютна адресаціядозволяє звернутися до будь-якого осередку DSEG і області SFR. Пряма адреса в цьому випадку займає один байт, а команда – два байти. У системі команд байт прямої адреси позначено словом direct (прямий) (direct = 00h ... FFh). Наприклад, команда MOV 80h,R2 (або MOV P0,R2) завантажує вміст регістра R2 поточного банку даних порт Р0 (осередок 80h області SFR). Якщо обидва операнди мають пряму абсолютну адресацію, то команда стає трибайтовою (наприклад, MOV 80h, 15h).

Непряма адресація. У полі адреси вказана адреса осередку пам'яті, в якій знаходиться пряма адреса операнда. У системі команд на непряму адресацію вказує спеціальний символ @. Властивістю

зберігати пряму адресу мають регістри R0 і R1 (@Ri, i = 0,1) кожного регістрового банку. Наприклад, якщо вміст регістру R1 поточного банку регістрів дорівнює 15h, то команда MOV A, @ R1 виконає ту ж дію, що і наведена вище команда MOV A, 15h – завантажить вміст осередку пам'яті DSEG з адресою 15h в акумулятор. Однак команда MOV A, @ R1 однобайтова, але найголовніше, тут є можливість програмним способом змінювати адресу, змінюючи вміст регістру R1.

Відносна адресація. При відносній адресації пряма адреса формується шляхом додавання базової адреси з адресним полем команди. В якості базової адреси використовується вміст програмного лічильника, а адресне поле команди є восьмирозрядним зміщенням rel (relative - відносний). Число rel інтерпретується командою як ціле зі знаком, представлене додатковому коді. Діапазон його вистави - (-128...+127). При визначенні числа rel слід врахувати, що програмний лічильник свідчить про наступну, підлягає виконанню, команду. Відносна адресація широко використовується в командах передачі управління, що дозволяє створювати програмні модулі, що переміщаються. Команди передачі управління з відносною адресацією дозволяють організувати розгалуження щодо поточного положення програмного лічильника PC в обидві сторони (-128...+127) байт.

У програмах мовою асемблера у полі зміщення можна вказати мітку, яку необхідно перейти. В результаті трансляції асемблер обчислить величину зміщення, якщо вона не перевищує (-128 ... +127). В іншому випадку буде видано повідомлення про помилку.

Базова адресаціяпредставляє різновид відносної адресації. Пряма адреса в цьому випадку формується шляхом додавання адреси, вказаної в команді, з вмістом базового регістру, в якому зберігається базова адреса. Функцію базового регістру в сімействі MCS-51 виконує регістр покажчик даних DPTR або програмний лічильник PC. Цей тип адресації особливо зручний при обробці таблиць та масивів даних. У командах MOVC A,@A+DPTR та MOVC A,@A+PC 16-розрядна пряма адреса формується як сума вмісту регістрів DPTR та A або PC та A.

Сторінка адресація. При використанні сторінки адресації пам'ять розбивається на ряд сторінок однакової довжини. Адресація сторінок здійснюється окремим регістром сторінок, а адресація осередків пам'яті всередині сторінки – адресою, що міститься у команді. Пряма адреса формується конкатенацією (приєднанням) адреси сторінок та адреси осередку пам'яті всередині сторінки. У команді MOVX A, @ Ri функцію регістру сторінок виконує порт P2 (старший байт адреси), а вміст регістру Ri (молодший байт адреси) задає адресу всередині сторінки. При цьому пам'ять розбивається на 256 сторінок по 256 осередків у кожній із них.

Стекова адресаціявикористовується в безадресних командах і є поєднанням автоінкрементного та автодекрементного способів адресації, що працює за принципом LIFO (L ast I nput – F irst O utput)- «останнім увійшов – першим вийшов». Стек знаходиться в DSEG і зростає у бік збільшення адреси. Адреса вершини стека міститься в покажчику стека SP. При записі байта в стек спочатку виконується інкремент вмісту SP, а потім за цією адресою виконується запис. Під час читання байта зі стека спочатку виконується читання за адресою, яку вказує SP, та був - декремент SP. При використанні стека необхідно враховувати, що глибина стека (максимальна кількість осередків пам'яті, зайнятих під стек) апаратними засобами не контролюється. При надмірному збільшенні стека можуть бути зайняті не призначені йому клітинки пам'яті з втратою інформації у них. Апаратний стек використовується для збереження адреси повернення при обслуговуванні переривання.

2.7.2. Система команд сімейства MCS-51

Система команд представлена ​​в таблицях П2.1...П2.6 додатка 2. У таблицях вказано найменування команди, її мнемоніка, двійковий код операції, вплив команди на прапори C, OV, AC і P, довжина команди в байтах (Б) і час виконання у машинних циклах (Ц), і навіть зміст перетворення, виконуваного командою. Як роздільник адресних полів у командах використовується кома. Для покращення читання можна додати пробіли після коми, якщо їх підтримує асемблер, що використовується.

Усі безліч команд можна розбити на 5 груп: операції передачі, арифметичні операції, логічні операції, операції з бітами і операції передачі управління.

Група команд операцій передачі даних(таблиця П2.1) зі-

тримає команди MOV (передачі даних між DSEG та RSEG), MOVC (між CSEG та A), MOVX (між XSEG та A), команди звернення до стека PUSH та POP, а також дві команди обміну XCH та XCHD. Всі команди передачі даних, у яких приймачем є акумулятор, встановлюють прапор паритету вмісту акумулятора P, а команди з прямою адресацією, у яких приймачем є регістр PSW, змінюють всі прапори. Найбільш ємною є команда MOV, яка використовує чотири способи адресації: прямий регістровий (A, Rn, DPTR), прямий (direct), непрямий (@Ri), безпосередній (#data, #data16). Другий операнд команди є джерелом, перший – приймачем. Для вказівки приймача є три способи адресації (крім безпосереднього), а для вказівки джерела всі чотири. Трибайтова команда MOV direct,direct забезпечує пересилання між двома будь-якими осередками пам'яті (DSEG і SFR), включаючи RSEG. Для обміну з RSEG передбачені спеціальні дво- та однобайтові формати:

Спеціальна команда MOV DPTR, # data16 дозволяє завантажити 16-розрядний покажчик DPTR значенням data16.

Команда MOVC дозволяє зчитувати інформацію з програмної пам'яті CSEG не в регістр команд пристрою керування, а в акумулятор операційного пристрою. У команді використовуються два способи адресації: за базою DPTR та щодо PC. В обох випадках ціле без знаку усунення (індекс) зберігається в акумуляторі. Приймачем результату також є акумулятор. Команда дозволяє виконувати швидке перекодування за таблицями.

Звертання до зовнішньої пам'яті здійснюється за допомогою команди MOVX. Обмін здійснюється по байтах між акумулятором та зовнішнім XSEG. Осередок XSEG може бути адресована двома способами: побічно через 16-розрядний покажчик DPTR і побічно через 8-розрядний покажчик Ri, i=0,1. У разі регістром сторінок служить регістр P2.

Безадресні команди PUSH і POP забезпечують передачу даних.

них між DSEG, RSEG і SFR.

Команда обміну XCH забезпечує двосторонній обмін байтами, а команда XCHD – молодшими зошитами байтових операндів.

Група команд арифметичних операцій(таблиця П2.2) зі-

тримає команди додавання ADD, додавання з урахуванням перенесення ADDC, віднімання з урахуванням позики SUBB, збільшення та зменшення на одиницю INC і DEC, десяткової корекції додавання у двійково-десятковому (BCD) коді упакованого формату, множення MUL та поділу DIV. Операції виконуються над беззнаковими цілими числами. У операціях складання та віднімання першим операндом і приймачем результату служить акумулятор. Для визначення другого операнда використовується пряма реєстрова, пряма абсолютна, безпосередня та непряма адресації. Операції INC і DEC застосовні до акумулятора, що прямо адресується регістру, прямо або опосередковано адресується осередку пам'яті. Крім того, операція INC застосовна до вмісту 16-розрядного регістра покажчика DPTR.

В операціях цілого чисельного множення та поділу без знака беруть участь акумулятор та регістр B. При множенні 8-розрядне значення A множиться на 8-розрядне значення B, а 16-розрядний результат записується в пару BA. У цьому регістр B зберігає старшу частину произведения. Прапорець OV встановлюється, якщо добуток більший за 255. При розподілі 8-розрядного значення A на 8-розрядне значення B приватне записується в A, а залишок у B. При спробі розподілу на 0 встановлюється прапор переповнення OV.

Команда десяткового коригування акумулятора DA розміщується після команди додавання. Доданки необхідно подати в BCD коді. Коригування виконується стандартним способом.

Група команд логічних операцій(Таблиця П2.3 ) містить три типові операції: ANL - логічне І, ORL - логічне АБО, XRL - логічне виключне АБО. Джерелом першого операнда

служить або акумулятор A, або осередок пам'яті, що прямо адресується. Другий операнд задається одним із чотирьох основних методів адресації. До складу групи входять також одномісні операціїнад вмістом акумулятора: CLR – очищення, CPL – інверсії, а також RL, RLC, RR та RRC – операції циклічного та розширеного зрушень вправо та вліво. Сюди включена операція обміну зошит в акумуляторі SWAP, яка може інтерпретуватися як циклічний зсув байта на чотири розряди.

Група команд операцій із бітами(таблиця П2.6) містить ко-

манди SETB - установки біта в 1, CLR - скидання біта в 0, CPL - інверсії біта, ANL і ORL - логічне І та логічне АБО вмісту прапора C і прямо адресованого біта, MOV - пересилання біта.

У бітових операціях прапор C виконує роль булевого акумулятора. Як операнда використовується вміст прапора C або прямо адресованого біта bit області BSEG. У операціях ANL і ORL можна використовувати вміст прямо адресованого біта (bit) або інверсію вмісту (/bit).

У цю групу входять також команди умовного переходу з відносним 8-розрядним усуненням rel. Умовний перехід може бути здійснений як при встановленому (команда JB), так і при скинутому (команда JNB) биті. Особливо слід зазначити команду JBC, яка при встановленому біті реалізує розгалуження і водночас скидає біт 0.

Група команд передачі керування(таблиці П2.4 і П2.5)

тримає команди безумовного переходу AJMP, LJMP, SJMP, JMP, умовного переходу JZ, JNZ, CJNE, виклику ACALL, LCALL, повернення RET, RETI та модифікації з умовним переходом DJNZ. Сюди включено порожню команду NOP.

У командах передачі управління широко застосовується відносна адресація, що дозволяє створювати програмні модулі, що переміщаються. Як відносна адреса виступає 8-розрядне зміщення rel - байт зі знаком, що забезпечує перехід на (-128 ... +127) байт щодо поточного положення PC. Для переходу в будь-яку іншу точку 64 Кбайтового адресного простору може бути використаний або пряма addr16, або непряма адреса @A+DPTR. У разі вміст A інтерпретується як ціле без знака. Варіант короткої прямої адресації addr11 всередині 2 Кбайт поточної сторінки введений для сумісності з сімейством MCS-48.

Всі ці типи адресації використовуються у командах переходу. У командах виклику використовуються лише прямий addr16 та внутрішньосторінковий addr11 способи адресації. У всіх умовних командах використовується лише відносна адресація.

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



Сподобалася стаття? Поділіться їй