Мікроконтролери MCS-51: програмна модель, структура, команди. Мікроконтролери MCS-51

Мікроконтролери MCS-51: програмна модель, структура, команди. Мікроконтролери MCS-51

УДК 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.

Фірма Intel є родоначальницею архітектури сімейства MCS-51, яке отримало свою назву від першого представника цього сімейства - мікроконтролера 8051, випущеного в 1980 на базі технології n-МОП. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої чи внутрішньої програмної пам'яті та прийнятна ціна забезпечили цьому мікроконтролеру успіх на ринку. З точки зору технології мікроконтролер 8051 був для свого часу дуже складним виробом - в кристалі було використано 128 тис. транзисторів, що в 4 рази перевищувало кількість транзисторів у 16-розрядному мікропроцесорі 8086. Зазначений мікроконтролер залишається ядром сімейства MCS-51 і по 100%.

Основними елементами базової архітектури сімейства (архітектури мікроконтролера 8051) є:

8-розрядне АЛУ;

4 банки регістрів, по 8 у кожному;

Внутрішня (резидентна) пам'ять програм 4 Кбайт, що має тип ROM або EPROM (8751);

Внутрішня (резидентна) пам'ять даних 128 байт;

21 регістр спеціальних функцій;

Бульовий процесор;

Два 16-розрядні таймери/лічильники;

Контролер послідовного порту (UART);

Контролер обробки переривань із двома рівнями пріоритетів;

Чотири 8-розрядні порти вводу/виводу, два з яких використовуються як шина адреси/даних для доступу до зовнішньої пам'яті програм і даних;

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

Потім був випущений мікроконтролер 8052, який відрізнявся збільшеним обсягом резидентної пам'яті програм і даних, введеним третім таймером і розширеним контролером переривань.

p align="justify"> Наступним принциповим кроком у розвитку MCS-51 став переклад технології виготовлення на КМОП (модифікація 8xC51). Це дозволило реалізувати режими Idl (холостий хід) та Power Down (знижене споживання), що забезпечують різке зниження енергоспоживання кристала та відкрили дорогу до застосування мікроконтролера в енергозалежних додатках, наприклад, в автономних приладах з батарейним живленням.

І останнім важливим етапом розвитку МК 8051 фірмою Intel став випуск мікроконтролерів 8xC51FA/FB/FC та 8xC51RA/RB/RC, які для стислості часто позначаються як 8xC51Fx та 8xC51Rx. Головною відмінністю цієї групи кристалів є наявність у них спеціалізованого таймера/лічильника (РСА). Крім того, мікроконтролери 8xC51Rx додатково містять сторожовий таймер (WDT). Розглянемо архітектуру та функціональні можливості PCA докладніше.

До складу РСА входять:

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

П'ять 16-розрядних модуля вибірки та порівняння, кожен з яких пов'язаний зі своєю лінією порту введення/виведення мікроконтролера.

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

16-бітова вибірка значення таймера за позитивним фронтом зовнішнього сигналу;

16-бітова вибірка значення таймера за негативним фронтом зовнішнього сигналу;

16-бітова вибірка значення таймера за будь-яким фронтом зовнішнього сигналу;

16-бітовий програмований таймер;

16-бітове пристрій швидкісного виведення;

8-бітовий ШІМ.

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

Позначення

Макс. частота (МГц)

ROM/EPROM (байт)

лічильники

Вдалим, що архітектура цих мікроконтролерів стала промисловим стандартом, а сам РСА багаторазово відтворювався в різних модифікаціях МК 8051.

Деякі характеристики ряду мікроконтролерів MCS-51, що випускаються фірмою Intel, наведено у табл.1.1.

Спочатку найбільш "вузькими" місцями архітектури MCS-51 були 8-розрядне АЛУ на базі акумулятора і відносно повільне виконання команд (для виконання найшвидших команд потрібно 12 пе-

Таблиця 1.1

введення/виводу

АЦП, входи x розряди

периферія,

особливості

U піт. (В)

Низьковольтний варіант

4 рівні IRQ, clock out

4 рівні IRQ, clock out

Низьковольтний варіант 8xC51Fx

4 рівні IRQ, clock out

4 рівні IRQ, clock out

4 рівні IRQ, clock out

ріодів тактової частоти (частоти синхронізації МК). Це обмежувало застосування мікроконтролерів сімейства у додатках, що вимагають підвищеної швидкодії та складних обчислень (16- та 32-бітових). Нагальним стало питання принципової модернізації архітектури MCS-51. Проблема модернізації ускладнювалася тим, що до початку 90-х років вже було створено масу напрацювань у галузі програмного та апаратного забезпечення сімейства MCS-51, у зв'язку з чим одним із основних завдань проектування нової архітектури була реалізація апаратної та програмної сумісності з розробками на базі MCS -51.

Для вирішення зазначеного завдання було створено спільну групу з фахівців компаній Intel і Philips, але пізніше шляхи цих двох фірм розійшлися. У результаті в 1995 році з'явилося два істотно відмінні сімейства: MCS-251/151 у Intel і MCS-51XA у Philips (див. підрозділ 1.2).

Основні характеристики архітектури MCS-251:

24-розрядний лінійний адресний простір, що забезпечує адресацію до 16 Мбайт пам'яті;

Реєстрова архітектура, що допускає звернення до регістрів як до байтів, слів та подвійних слів;

Сторінковий режим адресації для прискорення вибірки команд із зовнішньої програмної пам'яті;

Черга інструкцій;

Розширений набір команд, що включає 16-бітові арифметичні та логічні операції;

Розширений адресний простір стеку (до 64 Кбайт);

Виконання найшвидшої команди за 2 такти.

Система команд MCS-251 включає два набори інструкцій – перший набір є копією системи команд MCS-51, а другий складається з розширених інструкцій, що реалізують переваги архітектури MCS-251. Перед використанням мікроконтролера його потрібно налаштувати, тобто. за допомогою програматора "пропалити" конфігураційні біти, що визначають, який із наборів інструкцій стане активним після включення живлення. Якщо встановити перший набір інструкцій, то в цьому випадку МК сімейства MCS-251 буде сумісний з MCS-51 лише на рівні двійкового коду. Такий режим називається Binary Mode. Якщо ж спочатку встановити набір розширених інструкцій (режим Source Mode), тоді програми, написані для MCS-51, вимагатимуть перекомпіляції на крос-засобах для MCS-251. Режим Source Mode дозволяє з максимальною ефективністю використовувати архітектуру MCS-251 та досягти найбільшої швидкодії.

Для користувачів, орієнтованих застосування мікроконтролерів MCS-251 як механічної заміни MCS-51, фірма Intel випускає мікроконтролери MCS-151, вже запрограмовані у стан Binary Mode.

Деякі характеристики ряду мікроконтролерів MCS-251/151 наведено у табл.1.1.

Нині Intel, спрямована ринку Pentium-процесорів, згортає виробництво кристалів MCS-51. В цілому для конкретного розробника це може залишитися і непоміченим, якщо він не використовує мікроконтролери 8xC51GB і 80C152Jx, які не мають своїх точних аналогів серед виробів інших фірм. Що ж до решти мікроконтролерів сімейства MCS-51, то всі вони багаторазово розтиражовані іншими компаніями.

Міністерство загальної та професійної освіти Російської Федерації Новосибірський Державний Технічний Університет В.М. Вепрік, В.А. Афанасьєв, А.І. Дружинін, А.А. Земсков, А.Р. Ісаєв, О.В. Малявко МІКРОКОНТРОЛЕРИ СІМЕЙСТВА MCS-51 Навчальний посібник з курсів "Мікропроцесорні системи" та "Проектування мікропроцесорних систем" для студентів старших курсів факультету автоматики та обчислювальної техніки всіх форм навчання Новосибірськ 1997 В.М. Вепрік, В.А. Афанасьєв, А.І. Дружинін, А.А. Земсков, А.Р. Ісаєв, О.В. Малявка. Мікроконтролери сімейства MCS-51: Навчальний посібник. - Новосибірськ. Пропонований до Вашої уваги навчальний посібник містить загальний опис архітектури, функціональних можливостей та системи команд сімейства однокристальних мікроконтролерів (Embedded Microcontrollers) MCS-51, вироблених фірмою INTEL. У другій частині посібника наводиться опис навчального мікропроцесорного контролера УМПК-51, запропонованого студентам як об'єкт дослідження під час виконання циклу лабораторних робіт. Матеріал посібника може використовуватися при курсовому та дипломному проектуванні, а також може бути корисним для інженерів – схемотехніків, які займаються розробкою та експлуатацією електронної апаратури. Автори висловлюють глибоку вдячність АТЗТ "Нові технології" - офіційному дистриб'ютору фірми INTEL за надання матеріалів, на основі яких виконано цю роботу. Табл.15, іл.25, список літ. 12 назв. Рецензенти: О.Д. Баран, Г.Г. Матушкін. Робота підготовлена ​​на кафедрі обчислювальної техніки Новосибірський державний технічний університет 2 ВСТУП. Сімейство 8-розрядних однокристальних мікроконтролерів MCS-51 з'явилося на світовому ринку на початку вісімдесятих років. Перші модифікації кристалів (близько 7) були виконані за високоякісною n-МОП (HMOS) технології та були функціонально завершеними однокристальними мікроЕОМ гарвардської архітектури, один з основних принципів якої полягає у логічному розділенні адресних просторів пам'яті програм та даних. З розвитком напівпровідникової технології наступні версії мікросхем MCS-51 стали виготовляти за більш досконалою та низькоспоживаючою КМОП (CHMOS) технологією (в активному режимі споживання кристалів було доведено до 10 50 мА). Система команд MCS-51, орієнтована на реалізацію різних цифрових алгоритмів управління, при збереженні певної зовнішньої схожості з системою команд попереднього сімейства MCS-48, якісно розширилася, в ній з'явилися принципові нововведення: бітово-орієнтовані операції та бітові поля, що адресуються в пам'яті даних. дало можливість говорити про реалізацію на кристалі бітового процесора; реалізовано виконання команд множення, поділу та віднімання; удосконалено роботу зі стеком; розширено групу команд передачі управління; Система команд стала виглядати симетричнішою, тобто менш залежною від пересилань даних через акумулятор. Функціональні можливості вбудованих периферійних пристроїв також розширилися за рахунок запровадження: двох 16-розрядних таймерів-лічильників; апаратного послідовного дуплексного порту; дворівневої системи переривань; чотирьох 8-бітових портів вводу-виводу. p align="justify"> Принципові зміни в структурі тимчасового циклу роботи процесора призвели до прискорення роботи із зовнішньою пам'яттю програм і даних, а також реакцій на зовнішні та внутрішні переривання. Сумарний розмір адресного простору зовнішньої пам'яті програм та даних збільшився до 128 Кбайт. 16-розрядні регістри лічильника команд (Program Counter) та покажчика даних (Data Pointer) дозволили безпосередньо звертатися до всього діапазону адрес, що дало розробникам можливість реалізації алгоритмів швидкої обробки великих масивів даних. Всі програмно-доступні вузли мікроконтролера були зведені в спеціальну область пам'яті даних (Special Function Register), що дозволило звертатися до них майже так само, як і до звичайних осередків резидентного ОЗУ. У пізніших модифікаціях кристалів удосконалення йшло шляхом нарощування додаткових функціональних можливостей зі збереженням повної програмної сумісності з ранніми версіями. Особливістю останніх модифікацій мікроконтролерів сімейства MCS-51 є: повністю статичний дизайн; 3- та 5-вольтові версії кристалів; широкий спектр вбудованих периферійних пристроїв; максимальна тактова частота – 24 мГц; для окремих груп кристалів – 33 мГц. В даний час до складу MCS-51 входить близько 60 версій кристалів, крім того, є і доступна докладна фірмова документація (на жаль, поки що мало перекладена російською мовою). Для підготовки математичного забезпечення мікроконтролерів MCS-51 використовуються в основному мови "ASM-51", "С", для яких існують ряд компіляторів, що досить добре зарекомендували себе, бібліотек стандартних підпрограм і програмних емуляторів, що виробляються різними зарубіжними та вітчизняними фірмами. 3 Незважаючи на достатню "древність" сімейства (понад 15 років) та появу на світовому ринку за останні роки однокристальних мікроконтролерів більшої продуктивності та вдосконаленої архітектури - MCS-51, MCS-251, MCS-96, контролери MCS-51 ще досить довго будуть широко використовуватись у порівняно простих вбудованих системах управління. 4 1. СИСТЕМА ОЗНАЧЕНЬ КОМПОНЕНТІВ ФІРМИ INTEL І ФУНКЦІОНАЛЬНИЙ СКЛАД СІМЕЙСТВА MCS-51 Для маркування мікросхем фірмою INTEL застосовується система позначень з декількох полів: 1 2 3 4 Х ХХ ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ температурний діапазон мікросхеми: А (Automotive) , автомобільне виконання для розширеного температурного діапазону (-40/+125 С) М (Military), виконання за військовими стандартами (-55/+125 С) Q або С (Commercial), "комерційний" температурний діапазон (0/+70 С ) з (160 8)-годинним динамічним термотренуванням; L або Е (Extended), "розширений" температурний діапазон (-40/+85 С) з (160 8)- годинним динамічним термотренуванням; Т (Extended), "розширений" температурний діапазон (-40/85 С) без термотренування; I (Industrial), виконання за промисловими стандартами. Друге поле містить одно-або дволітерний префікс, що вказує на варіант виконання корпусу мікросхеми (Package Type). Різних типів корпусів мікросхем на сьогоднішній день кілька десятків, тому як приклад наведемо лише деякі позначення: A Ceramic Pin Grid Array, (PGA); C Ceramic Dual In-Line Package (CDIP); K Ceramic Quad Flatpack Package (QFP); KD Plastic Quad Flatpack Package, Fine Pitch, Die Down, (PQFP); KU Plastic Quad Flatpack Package, Fine Pitch, Die Up, (PQFP); N Plastic Leaded Chip Carrier, (PLCC); P Plastic Dual In-Line Package (PDIP); SM Single In-Line Leadless Memory Module, (SIMM); U Plastic Dual In-Line Package, Shrink Dip, (PDIPS); Z Zigzag In-Line Package (ZIP). Третє поле може містити до 15 цифрових та буквених символів, що вказують на тип конкретного пристрою, розташованого на кристалі. Четверте поле може включати до шести цифрових та буквених символів, що відображають різні особливості та варіанти виконання мікросхем. Додаткову інформацію щодо типів корпусів та їх конструктивного виконання можна знайти в книзі: Packaging Order Number 240800. Що стосується описуваних мікроконтролерів сімейства MCS-51, перший символ третього поля традиційно (для фірми Intel) дорівнює "8". Другий символ третього поля зазвичай вказує на тип вбудованого ПЗП: 0 масочний ПЗП програм; кристал без ПЗП (для пізніх версій кристалів); 1 масочне ПЗП програм (Standard ROM Code, Firmware); 3 масочне ПЗП (для пізніх версій кристалів), (Customizable ROM Code); 7 УФРПЗУ або одноразово-програмоване ПЗП (EPROM or OTP ROM); 8 ЕСППЗУ (Flash - пам'ять на кристалі) Далі може бути буква, що вказує на технологічні особливості виготовлення: відсутність букви технологія HMOS, живлення 5В; З технологія СHMOS, живлення 5В; L технологія СHMOS, живлення 3В; 5 Наступними символами третього поля для мікроконтролерів сімейства MCS-51 є номери (наприклад, 31,32,51,54,58,152) та від однієї до чотирьох букв, що відображають функціональні особливості кристалів (наприклад, обсяг ПЗП, специфіку групи кристалів, наявність системи захисту пам'яті програм від несанкціонованого доступу, можливість використання досконалішого алгоритму програмування "Quick Pulse" тощо). В оригінальній технічній документації фірми Intel всі мікроконтролери сімейства MCS-51 скомпоновані за групами ("Product Line"), кожна з яких об'єднує найближчі за своїми функціональними можливостями та електричними параметрами версії кристалів. Оскільки найменування мікросхем однієї групи розрізняються незначно, то для позначення кожної окремої групи застосовується узагальнена символіка, утворена з маркування конкретних мікросхем, шляхом заміни символів, що розрізняються, на "Х". Таким чином, можна виділити такі групи мікроконтролерів. 1. Група 8Х5Х (8051 Product Line та 8052 Product Line): 8031АН, 8051АН, 8751Н, 8051АНР, 8751Н-8, 8751ВН, 8032АН, 8052АН, 8752В. 2. Група 8ХС51 (80С51 Product Line): 80С31ВН, 80С51ВН, 87С51. 3. Група 8ХС5Х (8ХС52/54/58 Product Line): 80С32, 80С52, 87С52, 80С54, 87С54, 80С58, 87С58. 4. Група 8ХС51FX (8XC51FA/FB/FC Product Line): 80C51FA, 83C51FA, 87C51FA, 83C51FB, 87C51FB, 83C51FC, 87C51FC. 5. Група 8ХL5X (8XL52/54/58 Product Line): 80L52, 87L52, 80L54, 87L54, 80L58, 87L58. 6. Група 8XL51FX (8XL51FA/FB/FC Product Line): 80L51FA, 83L51FA, 87L51FA, 83L51FB, 87L51FB, 83L51FC, 87L51FC. 7. Група 8ХС51RX (8XC51RA/RB/RC Product Line): 80C51RA, 83C51RA, 87C51RA, 83C51RB, 87C51RB, 83C51RC, 87C51RC. 8. Група 8ХC51GB (8XC51GX Product Line): 80C51GB, 83C51GB, 87C51GB. 9. Група 8ХС152JX (8XC152 Product Line): 80C152JA, 83C152JA, 80C152JB, 80C152JC, 83C152JC, 80C152JD. 10. Група 8XC51SL (8XC51SL Product Line): 80C51SL-BG, 81C51SL-BG, 83C51SL-BG, 80C51-AH, 81C51SL-AH, 83C51SL-AH, 85C5 83C51SL-AL, 87C51SL-AL. Перша група мікроконтролерів включає молодші моделі сімейства, виконані за n-МОП технології і не рекомендовані до використання в нових розробках, всі інші групи виконані за сучасною КМОП технології. Мікросхеми другої, третьої та четвертої груп є на сьогоднішній день класичними представниками сімейства MCS-51. У п'яту та шосту групи входять 3-вольтові версії кристалів (Low-Voltage). Кристали сьомої групи оснащені розширеним ОЗП (Expanded RAM), обсяг якого дорівнює 512 байт. Мікросхеми восьмої, дев'ятої та десятої груп є спеціалізованими по застосуванню мікроконтролери (Application Specific). Багато сучасних програм вимагають високопродуктивних керуючих мікроконтролерів, які використовують розширені можливості адресації, реєстрову архітектуру, великий обсяг внутрішнього ОЗП і стека, а також ефективно підтримують програмування мовою високого рівня. До таких мікроконтролерів відносяться мікроконтролери нової архітектури (New Architecture) сімейств MCS-5 і MCS-251, виробництво яких компанія Intel приступила в 1995 році. Функціональний склад та ключові особливості мікроконтролера MCS-51/MCS-251 наведено у додатку. 6 2. ОСНОВНІ ХАРАКТЕРИСТИКИ БАЗОВОЇ МОДЕЛІ СІМЕЙСТВА МІКРОКОНТРОЛЕРІВ MCS-51. Базовою моделлю сімейства мікроконтролерів MCS-51 та основою для всіх наступних модифікацій є мікроконтролер I-8051. Його основні характеристики: восьмирозрядний ЦП, оптимізований для реалізації функцій управління; вбудований тактовий генератор; адресний простір пам'яті програм – 64 К; адресний простір пам'яті даних – 64 К; внутрішня пам'ять програм – 4 К; внутрішня пам'ять даних – 128 байт; додаткові можливості для виконання операцій булевої алгебри (побітові операції); 32 двонаправлені та індивідуально адресовані лінії введення/виводу; 2 шістнадцятирозрядні багатофункціональні таймери/лічильники; повнодуплексний асинхронний приймач; векторна система переривань з двома рівнями пріоритету та шістьма джерелами подій. Структурну схему I-8051 показано на рис.1, призначення висновків мікросхеми - на рис.2. 128 bytes T/C 0 counter 4K ROM control RAM T/C 1 inputs CPU BUS 4 I/O Serial OSC control Ports Port P0 P1 P2 P3 T D R D Address/Data Рис.1. Структурна схема I-8051 Вся серія MCS-51 має гарвардську архітектуру, тобто окремі простори адреси пам'яті програм і даних. Організація пам'яті зображено на рис.3. Об'єм внутрішньої (резидентної) пам'яті програм (ROM, EPROM або OTP ROM), що розташовується на кристалі, залежно від типу мікросхеми може становити 0 (ROMless), 4К (базовий кристал), 8К, 16К або 32К. За потреби користувач може розширювати пам'ять програм встановленням зовнішнього ПЗП. Доступ до внутрішнього або зовнішнього ПЗП визначається значенням сигналу на виведенні ЕА (External Access): EA = Vcc (напруга живлення) – доступ до внутрішнього ПЗП; EA = Vss (потенціал землі) – доступ до зовнішнього ПЗУ. Для кристалів без ПЗП (ROMless) висновок ЕА має бути постійно підключений до Vss. Строб читання зовнішнього ПЗП - PS EN (Program Store Enable) генерується при зверненні до зовнішньої пам'яті програм і є неактивним під час звернення до ПЗП, розташованого на кристалі. 7 Область нижніх адрес пам'яті програм використовується системою переривань, архітектура мікросхеми 8051 забезпечує підтримку п'яти джерел переривань: двох зовнішніх переривань; двох переривань від таймерів; переривання від послідовного порту. P1.0 1 40 Vcc P1.1 2 39 P0. 0 (AD0) P1.2 3 38 P0.1 (AD1) P1.3 4 37 P0.2 (AD2) P1.4 5 36 P0.3 (AD3) P1.5 6 35 P0.4 (AD4) P1. 6 7 34 P0.5 (AD5) P1.7 8 33 P0.6 (AD6) RESET 9 32 P0.7 (AD7) (RD) P3.0 10 31 EA/Vpp (TD) P3.1 11 30 ALE/ PROG (INT0) P3.2 12 29 PSEN (INT1) P3.3 13 28 P2.7 (A15) (T0) P3.4 14 27 P2.6 (A14) (T1) P3.5 15 26 P2.5 ( A13) (WR) P3.6 16 25 P2.4 (A12) (RD) P3.7 17 24 P2.3 (A11) XTAL2 18 23 P2.2 (A10) XTAL1 19 22 P2.1 (A9) Vss 20 21 P2.0 (A8) Рис.2. Призначення висновків I-8051 Пам'ять програм (Читання) Пам'ять даних (Читання/Запис) FFFFH Зовнішнє ПЗУ FFFFH Зовнішня @DPTR RD пам'ять PSEN WR даних @PC MOVC EA=0 Внутрішня пам'ять @DPTR даних @PC Зовнішнє Внутрішнє FFH upper 1 ПЗП 80H EA=0 0000H EA=1 lower 128 00H 0000H PSEN Рис.3. Організація пам'яті сімейства MCS-51 8 На рис.4 зображено карту нижньої області програмної пам'яті. ROM Пам'ять програм 0033Н 002BН Serial Port 0023Н Вектор Timer1 001BН переривань EINT1 0013Н Timer0 000BH EINT0 0003Н Стартова адреса 0000H (Reset) Рис.4. Програмна пам'ять Адреси векторів переривань розташовані з інтервалом 8 байт: - 0003Н зовнішнє переривання 0 (External Interrupt 0) - висновок IN T 0 ; - 000BН переривання від таймера 0 (прапором переповнення таймера - T F 0); - 0013Н зовнішнє переривання 1 (External Interrupt 1) - висновок IN T 1; - 001BH переривання від таймера 1 (прапором переповнення таймера - T F 1); - 0023H переривання від послідовного порту (Serial Interrupt = Receive Interrupt or Transmit Interrupt); і так далі. Пам'ять даних відокремлена від пам'яті програм. У цій галузі можлива адресація 64К зовнішньої ОЗП. При зверненні до зовнішньої пам'яті даних ЦП мікроконтролера генерує відповідні сигнали читання (RD) або запису (WR), взаємодія з внутрішньою пам'яттю даних здійснюється на командному рівні, при цьому сигнали RD і WR не виробляються. Зовнішня пам'ять програм і зовнішня пам'ять даних можуть комбінуватися шляхом поєднання сигналів R D і S EN за схемою "логічного І" для отримання строба зовнішньої пам'яті (програм/даних). Нижні 128 байт внутрішньої пам'яті даних (lower 128) присутні на всіх кристалах MCS-51 та показані на рис.5. Перші 32 байти є 4 банки (Register Bank) по 8 регістрів (R7...R0). Регістри R0 і R1 в будь-якому з банків можуть використовуватися як регістри непрямої адреси. Наступні за реєстровими банками 16 байт утворюють блок побитно-адресованого простору. Набір інструкцій MCS-51 містить широкий вибір операцій над бітами, а 128 біт в цьому блоці адресуються прямо і мають значення від 00Н до 7FH. Всі байти в нижній 128-байтній половині пам'яті можуть адресуватися як прямо, так і опосередковано. Верхня 128 байтна половина пам'яті ОЗП (upper 128) у мікросхемі I-8051 відсутня, але є у версіях кристалів з 256 байтами ОЗП. У цьому випадку область "Upper 128" доступна лише при непрямій адресації. Область SFR (Special Function Register) доступна лише за прямої адресації. Розміщення регістрів спеціальних функцій у просторі SFR показано на рис.6. Вони включають регістри портів, таймери, засоби управління периферією і так далі. 9 7FH Побайтно-адресована область ОЗУ 30H (direct, indirect) 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 7H 10 20 H 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H 1FH RB3 18H 17H RB2 10H 0FH RB1 08H 07H SP після RESET 00H RB0(R7+R0) Мал.5. Нижні 128 байт внутрішньої ОЗУ. побітова адресація 8 байт F8H FFH F0H B F7H E8H EFH E0H ACC E7H D8H DFH D0H PSW D7H C8H CFH C0H C7H B8H IP BFH B0H P3 B7H OD TL0 TL1 TH0 TH1 8FH 80H P0 SP DPL DPH PCO 87H N 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F Мал.6. Розміщення регістрів спеціальних функцій у просторі SFR. Для 16 адрес у просторі SFR є можливість як байтової, так і бітової адресації. Для побітно-адресованих регістрів шістнадцяткова адреса закінчується на "0Н" або на "8Н". Бітові адреси у цій галузі мають значення від 80Н до FFH. Вся серія кристалів сімейства MCS-51 має базовий набір SFR, як і в мікросхемі I-8051, розташований за тими самими адресами. Однак у кристалах, що являють собою подальший розвиток сімейства в область SFR, додаються нові регістри для розширення 10

У витоків виробництва мікроконтролерів стоїть фірма Intel із сімействами восьмирозрядних мікроконтролерів 8048 і 8051. Архітектура MCS-51 отримала свою назву від першого представника цього сімейства - мікроконтролера 8051, випущеного в 1980 на базі технології HMOS. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої чи внутрішньої програмної пам'яті та прийнятна ціна забезпечили цьому мікроконтролеру успіх на ринку. З погляду технології мікроконтролер 8051 був для свого часу дуже складним виробом - у кристалі було використано 128 тис. транзисторів, що в 4 рази перевищувало кількість транзисторів у 16-розрядному мікропроцесорі 8086.

Основними елементами базової архітектури є:
- 8-розрядне АЛП на основі акумуляторної архітектури;
- 4 банки регістрів, по 8 у кожному;
- Вбудована пам'ять програм 4Кбайт;
- внутрішнє ОЗП 128 байт;
- Бульовий процесор
-2 шістнадцятирозрядні таймери;
- Контролер послідовного каналу (UART);
- контролер обробки переривань із двома рівнями пріоритетів;
- чотири 8-розрядні порти вводу/виводу, два з яких використовуються як шина адреси/даних для доступу до зовнішньої пам'яті програм і даних;
- Вбудований тактовий генератор.

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

Наступним важливим кроком у розвитку MCS-51 став переклад технології виготовлення на CHMOS. Це дозволило реалізувати режими Idle і Power Down, що дозволили різко знизити енергоспоживання кристала і відкрили дорогу до застосування мікроконтролера в енергозалежних програмах, наприклад, в автономних приладах з батарейним живленням.

І останнім важливим етапом розвитку цього напряму фірмою Intel у рамках 8-бітної архітектури став випуск мікроконтролерів 8xC51FA/FB/FC, які для стислості часто позначаються як 8xC51FX. Головною відмінністю цієї групи кристалів є наявність у них масиву програмованих лічильників (PCA). Структурна схема PCA представлена ​​рис.2.

До складу PCA входять:

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

16-бітна вибірка значення таймера за позитивним фронтом зовнішнього сигналу;
16-бітна вибірка значення таймера за негативним фронтом зовнішнього сигналу;
16-бітна вибірка значення таймера за будь-яким фронтом зовнішнього сигналу;
16-бітний програмний таймер;
16-бітове пристрій швидкісного виведення (HSO);
8-бітний ШІМ

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

Спочатку найбільш "вузькими" місцями архітектури MCS-51 були 8-розрядне АЛУ на базі акумулятора та відносно повільне виконання інструкцій (для виконання найшвидших інструкцій потрібно 12 періодів тактової частоти). Це обмежувало застосування мікроконтролерів сімейства у додатках, що вимагають підвищеної швидкодії та складних обчислень (16- та 32-бітових). Нагальним стало питання принципової модернізації старої архітектури. Проблема модернізації ускладнювалася тим, що до початку 90-х років вже було створено масу напрацювань у галузі програмного та апаратного забезпечення, і одним із основних завдань розробки нової архітектури була реалізація апаратної та програмної сумісності зі старими розробками на базі MCS-51. Для вирішення цього завдання було створено спільну групу з фахівців компаній Intel та Philips. В результаті в 1995 р. з'явилося 2 істотно відмінні сімейства: MCS-251/151 у Intel і 51XA у Philips (на останньому ми зупинимося нижче).

Основні характеристики архітектури MSC-251:

24-розрядний лінійний адресний простір, що забезпечує адресацію до 16M пам'яті(Микроконтролери сімейства MCS-251, що випускаються, мають адресний простір пам'яті об'ємом 256К);
Система команд мікроконтролерів сімейства MCS-251 містить усі 111 команд, що входять до системи команд мікроконтролерів сімейства MCS-51 ("старі" команди), і, крім того, до неї входять 157 "нових" команд. Коди деяких нових команд мають формат 4 байти.
Перед використанням мікроконтролера його потрібно налаштувати, тобто. за допомогою програматора "пропалити" конфігураційні байти, що визначають, який із наборів інструкцій стане активним після включення живлення. Якщо встановити набір інструкцій MCS-51, тоді MSC-251 буде сумісний з MCS-51 на рівні двійкового коду. Такий режим називається Binary Mode. Однак розширені вказівки в цьому режимі також доступні через "кватирку" - зарезервований код інструкції 0A5h. Звісно, ​​довжина кожної розширеної інструкції збільшується у разі на 1 байт. Якщо спочатку встановити набір розширених інструкцій, то цьому випадку програми, написані для MCS-51 вимагатимуть перекомпіляції на крос-засобах для MCS-51, т.к. тепер вже стандартні інструкції будуть доступні через ту ж "кватирку" 0A5h і довжина їх також збільшиться на 1 байт. Такий режим називається Source Mode. Він дозволяє з максимальною ефективністю використовувати розширені інструкції та досягти найбільшої швидкодії, але потребує переробки програмного забезпечення.
реєстрова архітектура, що допускає звернення до регістрів як до байтів, слів та подвійних слів;
сторінковий режим адресації для прискорення вибірки інструкцій із зовнішньої програмної пам'яті;
черга інструкцій;
розширений набір команд, що включає 16-бітові арифметичні та логічні інструкції;
розширений адресний простір стеку до 64К;
виконання найшвидшої інструкції за 2 такти;
сумісність лише на рівні двійкового коду з програмами для MCS-51.

Для користувачів, орієнтованих застосування мікроконтролерів MCS-251 як механічної заміни MCS-51 фірма Intel випускає мікроконтролери MCS-251 з вже запрограмованими бітами конфігурації може Binary Mode. Такі мікроконтролери отримали індекс MCS-151.

Окрім самої Intel мікроконтролери MCS-251 за її ліцензією випускає компанія Temic Semiconductors.

Універсальна послідовна шина (Universal Serial Bus або USB) поширює технологію Plug-and-Play на зовнішні пристрої вводу/виводу, які застосовуються на сучасних високопродуктивних персональних комп'ютерах.

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

Основні характеристики продукту

Повна сумісність зі "Специфікацією Universal Serial Bus 1.0"
Вбудований USB transceiver Serial Bus Interface Engine (SIE)
Чотири черги FIFO для передачі
Три 16-байтні черги FIFO
Чотири черги FIFO для прийому
Три 16-байтні черги FIFO
Одна настроювана черга FIFO (до 1024 байт)
Автоматичне керування прийомом/передачею у чергах FIFO
Операції зупинки/відновлення
Три вектори переривання шини USB
Цикл блокування фази
Швидкості передачі даних: 12 Мбіт/сек та 1,5 Мбіт/сек
Режим із уповільненим циклом
Зовнішній адресний простір ємністю 256 Кбайт
Енергозберігаючі режими: очікування та відключення живлення
Параметри, що задаються користувачем
Очікування в реальному часі
1 Кбайт оперативної пам'яті на кристалі
Чотири порти введення/виводу
Програмований масив лічильників (PCA)
Стандартний (MCS 51) мікроконтролер UART
Апаратний сторожовий таймер
Три 16-розрядні таймери/лічильники з гнучкими можливостями
Сумісність з набором команд мікроконтролерів архітектури MCS 51 та MCS 251
Архітектура мікроконтролера MCS 251, заснована на регістрах
Робоча частота 6 або 12 МГц

Контролер 8x930Hx має додаткові характеристики:

Концентратор USB
Можливості керування концентратором USB
Управління з'єднанням
Виявлення з'єднання/розриву зв'язку з пристроєм виводу
Управління живленням, включаючи зупинку/відновлення
Виявлення та відновлення збоїв шини
Підтримка повношвидкісних та низькошвидкісних пристроїв виведення
Вихідний контакт для перемикання живлення порту
Вхідний контакт для виявлення перевантаження

Чотири різні режими передачі даних USB забезпечуються спільною роботою трьох елементів: Хост, Концентратор, Функціональний пристрій. Хост контролює передачу по шині змістовної та керуючої інформації. Функціональні устрою розширюють хост-системи. Сюди включаються типові види роботи з комп'ютером: введення з клавіатури або джойстика, виведення на монітор; а також більш складні види діяльності, такі як цифрова телефонія та передача зображень. Для управління функціональними пристроями спроектовано мікроконтролер Intel 8x930Ax. Нарешті, концентратори являють собою точку розширення USB, за допомогою якої забезпечується доступ до інших функціональних пристроїв. Мікроконтролер Intel 8x930Hx, у якому поєднані функції керування функціональним пристроєм та концентратором USB, є першим серійним концентратором USB, призначеним для сучасних периферійних пристроїв PC.

Концентратори USB відіграють істотну роль у розширенні світу користувачів PC. З появою периферійних пристроїв - клавіатур, моніторів, принтерів та інших - з вбудованими концентраторами, підключити або відключити новий пристрій так само просто, як вставити вилку в розетку. Новий рівень продуктивності та розширені способи з'єднання USB можуть призвести до появи пристроїв для робочих та розважальних програм нового покоління. Дні вбудованих карт, конфліктів IRQ та сплутаних клубків проводів вважаються.

Кабель шини USB складається всього з чотирьох проводів: Vbus, D+, D- та GND – чим досягається спрощення та одноманітність з'єднання. Цією ж метою є єдиний стандартний конектор для підключення периферійних пристроїв до шини USB. Дані по-різному передаються кабелями D+ і D-: або на повній швидкості 12 Мбіт/сек, або на низькій швидкості 1,5 Мбіт/сек. Приймач вбудований в кристал, тому необхідність у зовнішніх електронних ланцюгах відсутня. Виняток становить термінальний навантажувальний резистор на обох лініях D+ і D-, який необхідний визначення типу пристрою: високошвидкісне чи низкоскоростное.

Огляд сімейства
Сімейство Intel 8x930 складається із двох однокристальних контролерів.

Контролер Intel 8x930Ax є 8-розрядним пристроєм, який заснований на архітектурі мікроконтолера MCS 251 і призначений для роботи з периферійними пристроями, що підключаються до шині USB. З іншого боку, в 8x930Hx використано те саме ядро ​​мікроконтролера MCS 251 плюс розширені можливості вбудованого концентратора шини USB. Застосування архітектури MCS 251 в обох контролерах USB шини дає наступні переваги:

Висока продуктивність
Застосування змішаних типів пам'яті та адресації
Низьке енергоспоживання
Низький рівень шуму
Ефективна підтримка мов високого рівня
Розширений набір команд
Вбудовані можливості

В якості команд для 8x930Ax можна використовувати інструкції з набору для мікроконтролера MCS 51, так і з набору для мікроконтролера MCS 251. Такий підхід зберігає інвестиції користувачів в програмне забезпечення і вичавлює максимум продуктивності з додатків.

Мікроконтролери 8x930 настільки насичені різними вбудованими засобами, що вони виглядають потужнішими, ніж просто мікроконтролери. Масив програмованих лічильників (PCA) надає гнучкість додатків, які потребують порівняння чи захоплення даних у реальному часі, високошвидкісний обмін даними чи широтно-импульсная модуляція. Крім того, до складу контролера увійшли розширений послідовний порт, три 16-розрядні таймери/лічильники, апаратний сторожовий таймер, чотири 8-розрядні порти введення/виводу, а також передбачені два енергозберігаючі режими: очікування та відключення живлення.

Контролери сімейства 8x930Ax оснащені 1 Кбайт пам'яті та можуть бути використані у варіантах без постійної пам'яті або з постійною пам'яттю ємністю 8 або 16 Кбайт. Вони можуть адресувати до 256 Кбайт зовнішньої пам'яті для розміщення команд та даних та 40 байт регістрів загального призначення, які розташовуються в центральному процесорі як регістровий файл. Залежно від використовуваної комбінації в регістровому файлі можуть розташовуватися 16 байтових регістрів, 16 двобайтових регістрів і 10 чотирибайтових регістрів.

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

Обидва контролери 8x930 оснащені вісьмома чергами FIFO для підтримки внутрішніх пристроїв виведення: чотири черги для передачі та чотири черги для прийому. Чотири черги FIFO для прийому/передачі підтримують чотири кінцеві функціональні пристрої (від 0 до 3). Черга 0 складається з 16 байт і призначена для передачі інформації, що управляє. Черга 1 відноситься до категорії настроюваних користувачем і має ємність до 1024 байт. Черги 2 і 3 складаються з 16 байт кожна і можуть використовуватися передачі інформації в імпульсному, ізохронному і режимі передачі масивів. У разі використання контролера 8x930Hx зазначені черги посилюються парою черг FIFO для вхідних пристроїв. Ці черги у контролері 8x930Hx підтримуються додатковим повторювачем, який відповідає за повторну передачу потоків даних, що генеруються вихідними пристроями.

Огляд архітектури
Конструкційно реалізацію USB у мікроконтролерах 8x930Ax та 8x930Hx можна розділити на чотири блоки: черги FIFO, блок інтерфейсу з функціональними пристроями, блок інтерфейсу з послідовною шиною та приймач-передавач. Контролер 8x930Hx має довгострокові блоки для керування функціями концентратора: блок інтерфейсу з концентратором та повторювач.

Черги FIFO для прийому та передачі на обох контролерах є кільцевими. Черги підтримують до двох окремих наборів даних змінного розміру та містять регістри лічильника байтів, що показують кількість байтів у наборах даних. Черги мають прапорці, що показують заповненість або порожнечу черги, а також здатні повторювати прийом або передачу поточного набору даних. Блок інтерфейсу з функціональними пристроями (ІФУ) розподіляє передані або прийняті дані USB відповідно до типу передачі та стану черг. Крім того, блок ІФУ стежить за станом транзакції, керує чергами FIFO, за допомогою запиту на переривання повідомляє про настання подій, що управляють центральному процесору 8x930.

Блок інтерфейсу з послідовною шиною реалізує протокол передачі USB: послідовно впорядковує пакети, здійснює генерацію та розпізнавання сигналу, генерацію та перевірку контрольних сум, кодування/декодування даних за методом NRZI, побітове заповнення, генерацію та розпізнавання ідентифікатора пакета (PID).

Інтегрований приймач-передавач на мікроконтролерах USB узгоджений з простим чотири-жильним інтерфейсом, визначеним специфікацією USB 1.0. Сімейство контролерів 8x930 має три переривання, пов'язані з USB. Вони відбуваються при кожному старті кадру, закінченні прийому/передачі даних на кінцеві функціональні пристрої, у разі глобального зупинення або відновлення роботи. У концентраторі 8x930Hx блок інтерфейсу з концентратором служить для керування та стеження за станом з'єднання з вихідними портами. Повторювач відповідає за поширення сигналів портів USB, що підвищують і знижують.

Опитування стану системи переривань проводиться в кінці кожного машинного циклу у фазі 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) автоматично не зберігається. При цьому

 

 

Це цікаво: