ВБУДОВАНІ МІКРОПРОЦЕСОРНІ СИСТЕМИ НА ОСНОВІ однокристальних мікроЕОМ
Зміст
1. Структура мікроконтролера сімейства MCS-51
2. Програмно доступні ресурси та організація пам'яті
3. Система команд
4. Способи адресації операндів
5. Програмна модель бітового процесора
6. Застосування бітового процесора
СПИСОК ЛІТЕРАТУРИ
1. Структура мікроконтролера сімейства MCS-51
Внутрішня структура вихідного мікроконтролера сімейства MCS-51 (рис.1) включає наступний набір функціональних модулів:
8-розрядне АЛП з апаратною реалізацією операцій типу множення;
внутрішня пам'ять програм (4Кбайт) і ОЗУ даних (128 байт);
чотири універсальних програмованих паралельних 8-розрядних порту введення-виводу з можливістю реалізації певних альтернативних функцій;
два 16-розрядних програмованих таймера / лічильника;
дуплексний послідовний порт.
Цей набір апаратних засобів та сукупність реалізованих функцій роблять МК сімейства 8051 ефективним засобом збору, передобробки інформації та управління об'єктом.
Удосконалення HMOS технології, зростання ступеня інтеграції дозволив у рамках усталеної архітектури розширити набір внутрішніх інтерфейсних блоків, збільшити внутрішню пам'ять програм і даних. Таким чином з'явилися мікроконтролери типу 8052. Далі сімейство продовжувало збільшуватися за рахунок модифікацій типу 80С51/52/54/58, виконаних з використанням фірмової компліментарною MOS технології (CHMOS). Ця технологія дозволила зменшити рассеиваемую потужність при звичайній роботі і ввести особливі режими, додатково знижують енергоспоживання. З'явилися мікроконтролери типу 80L52/54/58 із зниженою напругою живлення.
З групою 80C51FA/FB/FC пов'язане запровадження в архітектуру сімейства модуля РСА (programmable counter array) і сторожового таймера WDT (watchdog timer). Модуль РСА призначений для виконання різних операцій рахунку і визначення тривалості інтервалів часу, в тому числі при широтно-імпульсної модуляції. Сторожовий таймер забезпечує перезавантаження процесора при зависаннях. Старшими членами сімейства є мікроконтролери типу 80C51GB, що мають вбудований 8-розрядний АЦП, шість паралельних портів. Сучасні версії мікроконтролерів сімейства MCS-51 виконані з використанням повністю статичної схемотехніки. Це дозволяє зупиняти мікроконтроллер при налагодженні системи, що розробляється.
Рисунок 1 - Структура мікроконтролера 8051AH
2. Програмно доступні ресурси та організація пам'яті
ОМЕВМ (МК сімейства MCS-51) має: 32 POH; 128 визначених користувачем програмно-керованих прапорів; набір регістрів спеціальних функцій. POH і визначені користувачем програмно-керовані прапори розташовані в адресному просторі внутрішнього ОЗУ даних. Регістри спеціальних функцій (SFR, SPECIAL FUNCTION REGISTERS) із зазначенням їх адрес наведено в таблиці 1.
Таблиця 1 - Регістри спеціальних функцій
Позначення
Найменування
Адреса
* АСС
Акумулятор
0Е0Н
* У
Регістр У
0F0H
* PSW
Регістр стану програми
0D0H
SP
Покажчик стека
81Н
DPTR
Покажчик даних. 2 байти:
DPL
Молодший байт
82Н
DPH
Старший байт
83Н
* Р0
Порт 0
80Н
* Р1
Порт 1
90н
* Р2
Порт 2
0А0Н
* РЗ
Порт 3
0В0Н
* IP
Регістр пріоритетів переривань
0В8Н
* IE
Регістр дозволу переривань
0А8Н
TMOD
Регістр режимів таймера / лічильника
89Н
* TCON
Регістр управління таймера / лічильника
88Н
TH0
Таймер / лічильник 0. Старший байт
8СН
TL0
Таймер / лічильник 0. Молодший байт
8АН
TH1
Таймер / лічильник 1. Старший байт
8DH
TL1
Таймер / лічильник 1. Молодший байт
8ВН
* SCON
Управління послідовним портом
98Н
SBUF
Буфер послідовного порту
99Н
PCON
Управління споживанням
87Н
* - Регістри, що допускають побітове адресацію.
Акумулятор. АСС - регістр акумулятора. Команди, призначені для роботи з акумулятором, використовують мнемоніку "А", наприклад, MOV А, Р2. Мнемоніка "АСС" використовується, наприклад, при побітової адресації акумулятора. Так, символічне ім'я п'ятий біта акумулятора при використанні асемблера ASM51 буде наступним: АСС.5.
Регістр В. Використовується під час операцій множення і ділення. Для інших інструкцій регістр В може розглядатися як додатковий сверхоперативной регістр.
Регістр стану програми. Регістр PSW містить інформацію про стан програми.
Покажчик стека SP. 8-бітовий регістр, вміст якого инкрементируется перед записом даних у стек при виконанні команд PUSH і CALL. При початковому скиданні покажчик стека встановлюється в 07Н, а область стека в ОЗП даних починається з адреси 08Н. При необхідності шляхом перевизначення покажчика стека область стека може бути розташована в будь-якому місці внутрішнього ОЗУ даних мікроЕОМ.
Покажчик даних. Покажчик даних (DPTR) складається з старшого байта (DPH) та молодшого байта (DPL). Містить 16-бітову адресу при зверненні до зовнішньої пам'яті. Може використовуватися як 16-бітовий регістр або як два незалежних восьмибітових регістру.
Порт0 - ПортЗ. Регістрами спеціальних функцій Р0, Р1, Р2, РЗ є регістри-"засувки" відповідно портів Р0, Р1, Р2, РЗ.
Буфер послідовного порту. SBUF представляє собою два окремих регістру: буфер передавача і буфер приймача. Коли дані записуються в SBUF, вони надходять у буфер передавача, причому запис байта в SBUF автоматично ініціює його передачу через послідовний порт. Коли дані читаються з SBUF, вони вибираються з буфера приймача.
Регістри таймера. Реєстрові пари (TH0, TL0) і (TH1, TL1) утворюють 16-бітові лічильні регістри відповідно таймера / лічильника 0 і таймера / лічильника 1.
Регістри управління. Регістри спеціальних функцій IP, IE, TMOD, TCON, SCON і PCON містять біти управління й біти стану системи переривань, таймерів / лічильників і послідовного порту. ОМЕВМ при функціонуванні забезпечує:
мінімальний час виконання команд складання - 1 мкс;
апаратне множення і ділення з мінімальним часом виконання команд множення / поділу - 4 мкс.
Всі ОМЕВМ розглянутого сімейства мають кілька адресних просторів, функціонально і логічно розділених за рахунок різниці в механізмах адресації і сигнали управління записом і читанням: пам'ять програм; внутрішня пам'ять даних; зовнішня пам'ять даних.
Структура адресного простору ОМЕВМ показана на рис. 2. Зліва наводяться адреси відповідних областей пам'яті.
Рисунок 2 - Простір пам'яті ОМЕВМ
Пам'ять програм має 16-бітову адресну шину, її елементи адресуються використанням лічильника команд (PC) або інструкцій, які виробляють 16-розрядні адреси.
Пам'ять програм доступна тільки з читання. ОМЕВМ не мають команд і керуючих сигналів, призначених для запису в пам'ять програм. Пам'ять програм має байтове організацію і загальний обсяг до 64 Кбайт. Ряд OMЕВМ (КР1816ВЕ51, КМ1816ВЕ751, КР1830ВЕ51) містять розташовану на кристалі внутрішню пам'ять програм ємністю 4 Кбайт, яка може бути розширена до 64 Кбайт за рахунок підключення мікросхем зовнішньої пам'яті програм.
ОМЕВМ сімейства MCS -51 мають зовнішній висновок DEMA, за допомогою якого можна заборонити роботу внутрішньої пам'яті програм, для чого необхідно подати на висновок DEMA "0". При цьому внутрішня пам'ять програм відключається і, починаючи з нульового адреси, всі звернення відбуваються до зовнішньої пам'яті програм з формуванням сигналу РМЕ. У випадку, якщо DEMA = 1, працюють і внутрішня, і зовнішня пам'ять програм. Для ОМЕВМ, що не мають внутрішньої пам'яті програм, для нормальної роботи завжди необхідно задавати DEMA = 0.
Таким чином, доступ до зовнішньої пам'яті програм здійснюється у двох випадках:
1) при дії сигналу DEMA = 0 незалежно від адреси звернення;
2) у будь-якому випадку, якщо програмний лічильник (PC) містить число, більше ніж 0FFFH.
Внутрішня пам'ять даних ОМЕВМ складається з двох областей: 128 байт оперативної пам'яті (ОЗП) з адресами 0-7FH і області регістрів спеціальних функцій, що займає адреси 80Н-FFH. Розподіл простору внутрішньої пам'яті даних показано на рис. 3. Фізично внутрішнє ОЗУ даних і область регістрів спеціальних функцій є окремими пристроями.
Усі клітинки внутрішнього ОЗУ даних можуть адресуватися з використанням прямої і непрямої адресації (режими адресації дані в описі системи команд ОМЕВМ). Крім того, внутрішнє ОЗУ даних має такі особливості.
Молодші 32 байти внутрішнього ОЗУ даних згруповані в 4 банки по 8 регістрів в кожному (БАНК0 - БАНКЗ на рис. 3). Команди програми можуть звертатися до регістрів, використовуючи їх імена R0 - R7. Два біта PSW (покажчики банку робочих регістрів RS0 і RS1) визначають, з регістрами якого банку проводяться маніпуляції. Наявність такого механізму роботи з осередками ОЗУ дозволяє економити пам'ять програм, тому що команди, які працюють з регістрами R0-R7, коротше команд, що використовують пряму адресацію.
Наступні після банків регістрів внутрішнього ОЗУ даних 16 байт (адреси 20Н-2FH) утворюють область осередків, до яких можлива побітова адресація. Набір команд ОМЕВМ сімейства MCS -51 містить значну кількість інструкцій, що дозволяють працювати з окремими бітами, використовуючи при цьому прямий адресацію. 128 біт, складових дану область внутрішнього ОЗУ даних, мають адреси 00Н-7FH і призначені для роботи з такими інструкціями.
Малюнок 3 - Адресний простір внутрішньої пам'яті даних
Зовнішня пам'ять даних формується додатковими мікросхемами пам'яті, які підключаються до ОМЕВМ, і може мати ємність до 64 Кбайт. Простору внутрішньої і зовнішньої пам'яті даних не перетинаються, тому що доступ до них здійснюється за допомогою різних команд. Для роботи із зовнішньою пам'яттю даних існують спеціальні команди MOVX, які не впливають на внутрішню пам'ять даних ОМЕВМ. Таким чином, в системі можуть одночасно бути присутньою внутрішня пам'ять даних з адресами 00Н - FFH і зовнішня пам'ять даних з адресами 0000Н - FFFFH.
Звернення до осередків зовнішньої пам'яті даних здійснюється тільки з використанням непрямої адресації по регістрах R0 і R1 активного банку регістрів внутрішнього ОЗУ (команди типу MOV @ Ri) або по регістру спеціальних функцій DPTR (команди типу MOV @ DPTR). Відповідно в першому випадку буде формуватися 8-розрядний, а в другому випадку 16-розрядний адреси зовнішньої пам'яті даних.
При зверненнях до зовнішньої пам'яті даних адреса виводиться через порт Р0 (молодший байт) і порт Р2 (старший байт) ОМЕВМ. Обмін байтом даних (запис і читання) здійснюється через порт Р0 ОМЕВМ, тобто порт Р0 використовується як шина адреси / даних в режимі мультиплексування.
Зчитування даних з зовнішньої пам'яті даних в ОМЕВМ проводиться за допомогою вихідного сигналу ОМЕВМ RD, а запис даних з ОМЕВМ в зовнішню пам'ять даних за допомогою вихідного сигналу ОМЕВМ WR.
Кожен тип зовнішньої пам'яті (пам'ять програм, пам'ять даних) може бути доданий незалежно від іншого і кожен використовує ті ж адреси і шини даних, але різні сигнали управління.
3. Система команд
Система команд ОМЕВМ сімейства MCS-51 має 111 команд і дозволяє реалізувати обробку даних, забезпечити виконання логічних, арифметичних операцій, а також управління в режимі реального часу. Реалізовано побітова, потетрадная (4 біти), побайтова (8 біт) і 16-розрядна обробка даних.
Повний опис команд і приклади їх виконання наведені в додатку Б.
У машинному коді команда займає один, два або три байти і виконується за один, два або чотири (множення і ділення) машинних циклу. При частоті тактового генератора, що дорівнює 12 МГц, одноцікловие команди виконуються за 1 мкс, двоциклового - за 2 мкс і т.д. З 111 типів команд 64 виконуються за 1 мкс (12 тактів), 45 команд - за 2 мкс (24 такту) та дві команди - множення і ділення (MUL, DIV) виконуються за 4 мкс (48 тактів).
Усі команди умовних переходів здійснюються стосовно вмісту лічильника команд з адресою переходу, обчислюваним ЦПУ під час виконання команди.
Трехбайтовие команди переходу і виклику LCALL, LJMP (з 16-розрядним адресою) дозволяють здійснювати перехід і звернення з будь-якою адресою адресного простору пам'яті програм ємністю 64 Кбайт. Якщо необхідний перехід в межах області пам'яті програм 2 К, то можна використовувати команди переходу і виклику з 11-розрядним адресою (ACALL, AJMP). Перехід всередині ділянки пам'яті, який визначається 8-розрядної величиною зміщення, здійснюється за командою SJMP. У табл. 2 наведено позначення і символи, використовувані в системі команд.
Систему команд ОМЕВМ умовно можна розбити на п'ять груп: арифметичні команди; логічні команди з вантовими змінними; команди передачі даних; команди бітового процесора; команди розгалуження програм і передачі управління.
Арифметичні команди. У наборі команд ОМЕВМ є такі арифметичні операції: додавання, додавання з урахуванням прапора перенесення, віднімання з заемом, инкрементирования, декрементірованіе, порівняння, десяткова корекція, множення і ділення.
Таблиця 2 - Позначення символів у наборі команд
Позначення, символ
Призначення
1
2
А
Акумулятор
Rr
Регістри поточного обраного банку регістрів
r
Номер завантаження регістра, зазначеного в команді
direct
Прямо адресується 8-бітовий внутрішній адресу комірки даних, який може бути осередком внутрішнього ОЗУ даних (0-127) або SFR (128-255)
@ Rr
Побічно адресується 8-бітова осередок внутрішнього ОЗУ даних
data 8
8-бітове безпосереднє дане, що входить в код операції (КОП)
Data 16
16-бітове безпосереднє дане, що входить КОП
Data Н
Старші біти (15-8) безпосередніх 16-бітових даних
Data L
Молодші біти (7-0) безпосередніх 16-бітових даних
Addr 11
11-бітову адресу призначення
Addr 16
16-бітову адресу призначення
Addr L
Молодші біти адреси призначення
disp 8
8-бітовий байт зміщення зі знаком
bit
Біт з прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або SFR
al5, al4 ... a0
Біти адреси призначення
(X)
Вміст елемента Х
((X))
(X) [M]
Вміст за адресою, що зберігається в елементі Х
Розряд М елемента Х
(X) [MI-M2]
Група розрядів М1-М2 елемента Х
+
-
*
/
AND
OR
XOR
/ X
Операції:
складання
віднімання
множення
ділення
логічного множення (операція І)
логічного складання (операція АБО)
додавання за модулем 2 (операція "Що виключає АБО")
інверсія елемента Х
В АЛП виробляються дії над цілими числами без знаку. У двухоперандних операціях: додавання (ADD), складання з перенесенням (ADDC) і віднімання з заемом (SUBB) акумулятор є першим операндом і приймає результат операції. Другим операндом може бути робочий регістр обраного банку робочих регістрів, регістр внутрішньої пам'яті даних з побічно-реєстрової і прямою адресацією або байт безпосередніх даних. Зазначені операції впливають на прапори: переповнення, перенесення, проміжного перенесення і прапор парності в слові стану процесора (PSW).
Використання розряду переносу дозволяє багаторазово підвищити точність при операціях додавання (ADDC) і віднімання (SUBB).
Виконання операцій додавання і віднімання з урахуванням знака може бути здійснено за допомогою програмного керування прапором переповнення (O V) регістра PSW. Прапор проміжного переносу (АС) забезпечує виконання арифметичних операцій в двійково-десятковому коді.
Операції инкрементирования і декрементірованія на прапори не впливають.
Операції порівняння не впливають ні на операнд призначення, ні на операнд джерела, але вони впливають на прапор переносу.
Існують три арифметичні операції, які виконуються тільки на акумуляторі: дві команди перевірки вмісту акумулятора A (JZ, JNZ), і команда десяткової корекції при додаванні двійково-десяткових кодів.
При операції множення вміст акумулятора А множиться на вміст регістра В і результат розміщується наступним чином: молодший байт в регістрі A, старший - в регістрі B.
У разі виконання операції ділення ціле від ділення поміщається в акумулятор А, залишок від ділення - у регістр В.
Логічні команди з вантовими змінними. Система команд ОМЕВМ дозволяє реалізувати логічні операції: "І", "АБО", "ВИКЛЮЧАЄ АБО" на регістрі-акумуляторі (А) і байті-джерелі. Другим операндом (байтом-джерелом) при цьому може бути робочий регістр у вибраному банку робочих регістрів; регістр внутрішнього ОЗУ, що адресується за допомогою побічно-реєстрової адресації; прямо адресуються осередку внутрішнього ОЗУ і регістри спеціальних функцій; безпосередня величина.
Зазначені логічні операції можуть бути реалізовані на будь-якому прямо адресуються регістрі внутрішнього ОЗУ або регістрі спеціальних функцій з використанням в якості другого операнда вмісту акумулятора А чи безпосередніх даних.
Існують логічні операції, які виконуються тільки на акумуляторі: скидання і інвертування всіх восьми розрядів А; циклічний зсув вліво і вправо; циклічний зсув вліво і вправо з урахуванням прапора перенесення; обмін місцями старшої та молодшої тетрад всередині акумулятора.
Команди передачі даних. Таблиці символів (кодів), зашиті в ПЗУ програми, можуть бути вибрані за допомогою команд передачі даних з використанням непрямої адресації. Байт константи може бути переданий в акумулятор з комірки пам'яті програм, що адресується сумою базового регістра (PC або DPTR) та індексного регістра (вмісту А). Це забезпечує, наприклад, зручний засіб реалізації алгоритму перетворення коду ASCII в семисегментний код.
Будь-яка осередок 256-байтового блоку зовнішнього ОЗУ даних може бути вибрана з використанням побічно-реєстрової адресації через регістри покажчики R0 або R1 (вибраного банку робочих регістрів).
Осередок всередині адресного простору 64 Кбайт зовнішнього ОЗУ також може бути вибрана з використанням побічно-реєстрової адресації через регістр-покажчик даних DPTR.
Команди передачі між прямо адресованими регістрами дозволяють заносити величину з порту в клітинку внутрішнього ОЗУ без використання робочих регістрів чи акумулятора.
У логічному процесорі будь прямо адресований біт може бути поміщений в біт перенесення і навпаки.
Вміст акумулятора може бути обміняна з вмістом робочих регістрів (вибраного банку) і з вмістом адресованих за допомогою побічно-реєстрової адресації комірок внутрішнього ОЗУ, а також з вмістом безпосередньо адресованих осередків внутрішнього ОЗУ і з вмістом регістрів спеціального призначення.
Молодша тетрада (розряди 3-0) вмісту акумулятора може бути обміняна з молодшою тетрадою вмісту осередків внутрішнього ОЗУ, обираних за допомогою побічно-реєстрової адресації.
Команди розгалуження і передачі управління. Адресний простір пам'яті програм ОМЕВМ не має сторінкової організації, що дозволяє вільно переміщати фрагменти програми всередині адресного простору, при цьому не потрібно перезасилка (зміна) номера сторінки.
Переміщення окремих фрагментів програми забезпечує можливість використання переміщуваних програмних модулів різними програмами.
Команди 16-розрядних переходів і викликів підпрограм дозволяють здійснювати перехід в будь-яку точку адресного простору пам'яті програм обсягом 64 Кбайт.
Команди 11-розрядних переходів і викликів підпрограм забезпечують переходи усередині програмного модуля ємністю 2 Кбайт. У системі команд є команди умовних і безумовних переходів щодо початкової адреси наступної команди в межах від (РС) -128 до (РС) +127. Команди перевірки окремих розрядів дозволяють здійснювати умовні переходи по стану "0" або "1" прямо адресованих бітів. Команди перевірки вмісту акумулятора (на нуль / не нуль) дозволяють здійснювати умовні переходи по вмісту А.
Побічно-реєстрові переходи в системі команд ОМЕВМ забезпечують галуження щодо базового регістра (вмісту DPTR або PC) зі зміщенням, що знаходяться в акумуляторі А.
Команди бітового процесора. Бітовий процесор є частиною архітектури ОМЕВМ сімейства MCS -51 і його можна розглядати як незалежний процесор побітової обробки. Бітовий процесор виконує свій набір команд, має своє побітове адресується ОЗУ і свій введення-виведення.
Команди, які оперують з бітами, забезпечують пряму адресацію 128 бітів (0-127) у шістнадцяти осередках внутрішнього ОЗУ (комірки з адресами 20Н-2FH) і пряму побітове адресацію регістрів спеціального призначення, адреси яких кратні восьми:
Р0 (80Н), TCON (88H), Р1 (90н), SCON (98H), Р2 (А0Н), Iе (А8Н), РЗ (В0Н), IР (В8Н), PSW (D0H), А (Е0Н), B (F0H).
Кожен з окремо адресованих бітів може бути встановлено у "1", скинутий в "0", інвертований, перевірений. Можуть бути реалізовані переходи: якщо біт встановлений; якщо біт не встановлений; перехід, якщо біт встановлено, зі скиданням цього біта; біт може бути перезаписаний в (з) розряду переносу. Між будь-яким прямо адресуються бітом і прапором переносу можуть бути зроблені логічні операції "І", "АБО", де результат заноситься в розряд прапора перенесення. Команди побітової обробки забезпечують реалізацію складних функцій комбінаторної логіки та оптимізацію програм користувача.
4. Способи адресації операндів
Існують наступні способи адресації операндів-джерел:
реєстрова адресація;
пряма адресація;
побічно-реєстрова адресація;
безпосередня адресація;
непряма адресація по сумі базового та індексного регістра.
Перші три способи використовуються також для адресації операнда призначення. Вказані п'ять способів адресації, що використовуються в різних поєднаннях, забезпечують 21 режим адресації. Багато команд містять поля: "приймач", "джерело", які визначають тип даних, метод адресації і беруть участь операнди.
Для команд, які не виконують операції перезапису, операнд призначення є і операндом-джерелом.
Велика кількість команд включає операнди, розташовані у внутрішньому ОЗП даних ОМЕВМ. Вибір адресного простору пам'яті програм або зовнішньої пам'яті даних в якості другого операнда визначається командного Мнемонік (якщо тільки другий операнд не є безпосередньою величиною).
Адресуемая область внутрішнього ОЗУ даних визначається способом адресації і величиною адреси. Наприклад, звернення до регістрів спеціальних функцій може бути виконано тільки за допомогою прямої адресації.
Реєстрова адресація. Реєстрова адресація використовується для звернення до восьми регістрів обраного банку (ці ж регістри можуть бути вибрані за допомогою прямої адресації і побічно-реєстрової адресації як звичайні осередку внутрішнього ОЗУ даних).
Реєстрова адресація використовується також для звернення до регістрів А, В, АВ (здвоєному регістра), DPTR і до прапора перенесення С. Використання реєстрової адресації дозволяє отримувати багатобайтових еквівалент трехбайтових команд прямої адресації.
ПРИКЛАД: MOV A, Rn; CLR A; DEC Rn; ADD A, Rn; MOV DPTR, # data16 і ін.
Пряма адресація. Пряма байтове адресація використовується для звертання до комірок внутрішньої пам'яті (ОЗУ) даних (0 - 127) та до регістрів спеціальних функцій.
ПРИКЛАД: MOV A, direct (MOV A, 4FH); MOV direct, direct; IN direct; ADD A, direct і ін.
Пряма побітова адресація використовується для звернення до окремо адресуються 128 бітам, розташованим в комірках з адресами 20Н-2FH і до окремо адресуються бітам регістрів спеціальних функцій.
ПРИКЛАД: SETB BIT (SETB 1 FH); CLR TF 0; CLR C.
Побічно-реєстрова адресація. Побічно-реєстрова адресація використовується для звертання до комірок внутрішнього ОЗУ даних. В якості регістрів-покажчиків використовується регістри R0, R1 обраного банку. У командах PUSH і POP використовується вміст покажчика стека (SP). Побічно-реєстрова адресація використовується також для звернення до зовнішньої пам'яті даних. У цьому випадку за допомогою регістрів-покажчиків R0 і R1 (вибраного банку робочих регістрів) вибирається осередок з блоку в 256 байт зовнішньої пам'яті даних. 16-розрядний покажчик даних (DPTR) може бути використаний для звернення до будь-якій комірці адресного простору зовнішньої пам'яті даних об'ємом до 64 Кбайт.
ПРИКЛАД: MOV A, @ Ri (MOV A, @ R 0); INC @ Ri; ADD A, @ Ri; XRL A, @ Ri; MOVX @ Ri, A; MOVX A, @ DPTR.
Безпосередня адресація. Безпосередня адресація дозволяє вибрати з адресного простору пам'яті програм константи, явно вказані в команді.
ПРИКЛАД: MOV A, # data (MOV A, # 1FH); MOV DPTR, # data16 (MOV DPTR, # 5B4EH); ADD A, # data; XRL A, # data.
Побічно-реєстрова адресація по сумі базового та індексного регістрів. Побічно-реєстрова адресація по сумі: базовий регістр плюс індексний регістр (вміст акумулятора А) спрощує перегляд таблиць, зашитих у пам'яті програм. Будь-який байт з таблиці може бути обраний за адресою, що визначається сумою вмісту DPTR або PC і вмісту А.
ПРИКЛАД: MOVC A, @ A + DPTR; MOVC A, @ A + PC; JMP @ A + DPTR.
5 Програмна модель бітового процесора
Придатність архітектури кожного комп'ютера для конкретного класу задач визначається тим, наскільки його система команд відповідає завданням, які повинні бути виконані. Тому для дискретного управління в реальному масштабі часу у системі команд операцій безпосередньо над бітами призводить до створення більш продуктивних систем та програм обробки вхідний і вихідний двійкової інформації. З цією метою в ОМЕВМ сімейства MCS-51 введені спеціальні засоби, звані двійкового процесором, які підтримують прямі логічні операції з окремими бітами і операції їх тестування і дозволяють використовувати однобітовий змінні в логічних операціях.
У зв'язку з цим у систему команд ОМЕВМ сімейства MCS -51 введені спеціальні інструкції для виконання операцій з бітовими змінними. Є 17 таких команд, які перераховані в табл. 3.
Таблиця 3 - Команди бітового процесора
Мнемонічне позначення
Опис команди
Число байтів
Число циклів
SETB C
Установка прапора перенесення
1
1
SETB bit
Установка біта
2
1
CLRC
Скидання прапора перенесення
1
1
CLR bit
Скидання біта
2
1
CPL C
Інверсія прапора перенесення
1
1
CPL bit
Інверсія біта
2
1
MOV C, bit
Пересилання біта в прапор переносу
2
1
MOV bit, C
Пересилання прапора перенесення в біт
2
2
ANL C, bit
"Логічне І" біта і прапора перенесення
2
2
ANL. C, / bit
"Логічне І" інверсії біта і прапора перенесення
2
2
ORL C, bit
"Логічне АБО" біта і прапора перенесення
2
2
ORL C, / bit
"Логічне АБО" інверсії біта і прапора перенесення
2
2
JC rel8
Перехід, якщо прапор переносу встановлений
2
2
JNC rel8
Перехід, якщо прапор переносу скинутий
2
2
JB bit, rel8
Перехід, якщо біт встановлено
3
2
JNB bit, rel8
Перехід, якщо біт скинутий
3
2
JBC bit, rel8
Перехід, якщо біт встановлений, і скидання цього біта
3
2
ПОЗНАЧЕННЯ:
С - прапор переносу;
bit - 128 програмно-доступних бітів, будь I / O висновок, біт управління або стану;
/ Bit - 128 програмно-доступних бітів, будь I / O висновок, біт управління або стану, взяті з інверсією;
rel8-байт відносного зсуву (умовний перехід здійснюється в діапазоні від -128 до +127 байтів щодо адреси першого байта наступної команди).
Ці команди в залежності від виконуваної функції можуть бути одно-, двох-або трехбайтние. Ті з них, які оперують з прапором переносу, мають однобайтовим код або код, за яким слід байт зсуву, що використовується для обчислення адреси умовного переходу (рис. 4.а). У більш узагальнених командах бітових операцій після коду додається байт адреси прямоадресуемого біта, утворюючи двох-або трехбайтние команди (рис. 4.б). На рис. 4 для довідки наведено коди цих команд.
За допомогою зазначених команд можна звертатися безпосередньо до 128 бітам внутрішнього ОЗУ і до 83 бітам одинадцяти восьмирозрядних регістрів ОМЕВМ.
Код команди:
Код команди:
SETB З
11010011В (D3H)
CLR З
11000011В (С3Н)
CPL З
10110011В (В3Н)
Код команди
Зсув
JC
<Ге18>
01000000В (40Н)
JNC
<Ге18>
01010000В (50Н)
а) Команди перевірки та управління прапором переносу
Код команди
Адреса біта
Код команди:
SETB
<bit>
11010010B (D2H)
CLR
<bit>
11000010В (С2Н)
CPL
<bit>
10110010В (В2Н)
MOV С,
<bit>
10100010В (А2Н)
MOV
<bit>, З
10010010В (92Н)
ANL С,
<bit>
10000010В (82Н)
ANL С,
</ Bit>
10110000В (В0Н)
ORL С,
<bit>
01110010В (72Н)
ORL С,
</ Bit>
10100000В (А0Н)
Код команди