Мікроконтролери сімейства MCS51. Мікроконтролери MCS-51: програмна модель, структура, команди Програмування портів МК мовою з 51

АРХІТЕКТУРА МІКРОКОНТРОЛЕРІВ СІМЕЙСТВАMCS-51

Конспект лекцій з курсів

"Мікропроцесори в системах контролю", "Мікропроцесорна техніка"

«Мікропроцесорні засоби та системи»

для студентів усіх форм навчання спеціальностей

072000 – Стандартизація та сертифікація

210200 – Автоматизація технологічних процесів

230104 – Системи автоматизованого проектування

Тамбов 2005

ВСТУП 3

1. СТРУКТУРА МІКРОКОНТРОЛЕРА INTEL 8051. 3

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

1.2. Арифметико-логічне пристрій. 6

1.3. Резидентна пам'ять програм та даних. 7

1.4. Акумулятор та регістри загального призначення. 8

1.5. Регістр слова стану програми та його прапори. 9

1.6. Регістри-покажчики. 10

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

1.8. Пристрій керування та синхронізації. 11

1.9. Паралельні порти введення/виведення інформації. 12

1.10. Таймери/лічильники. 13

1.11. Послідовний порт. 18

1.11.1. Реєстр SBUF.. 18

1.11.2. Режими роботи послідовного порту. 18

1.11.3. Реєстр SCON.. 19

1.11.4. Швидкість прийому/передачі. 21

1.12. Система переривань. 22

2. СИСТЕМА КОМАНД МІКРОКОНТРОЛЕРА INTEL 8051. 26

2.1. Загальні відомості. 26

2.1.1. Типи команд. 27

2.1.2. Типи операнда. 28

2.1.3. Способи адресації даних. 30

2.1.4. Прапори результату. 31

2.1.5. Символічна адресація. 32

2.2. Команди передачі. 33

2.2.1. Структура інформаційних зв'язків. 33

2.2.2. Звернення до акумулятора. 33

2.2.3. Звертання до зовнішньої пам'яті даних. 34

2.2.4. Звертання до пам'яті програм.


2.2.5. Звернення до стеку. 35

2.3. Арифметичні операції. 35

2.4. Логічні операції. 39

2.5. Команди передачі керування. 43

2.5.1. Довгий перехід. 43

2.5.2. Абсолютний перехід. 43

2.5.3. Відносний перехід. 44

2.5.4. Непрямий перехід. 44

2.5.5. Умовні переходи.

2.5.6. Підпрограми.. 47

2.6. Операції із бітами. 48

Контрольні питання... 49

ЛІТЕРАТУРА.. 50

Додаток СИСТЕМА КОМАНД INTEL 8051. 51

ВСТУП

З 80-х років 20 століття у мікропроцесорній техніці виділився самостійний клас інтегральних схем – однокристальні мікроконтролери, які призначені для вбудовування у прилади різного призначення. Від класу однокристальних мікропроцесорів їх відрізняє наявність внутрішньої пам'яті, розвинені засоби взаємодії із зовнішніми пристроями.

Широкого поширення набули 8-розрядні однокристальні мікроконтролери сімейства MCS-51. Це сімейство утворилося на основі мікроконтролера Intel 8051, що набув великої популярності у розробників мікропроцесорних систем контролю завдяки вдало спроектованій архітектурі. Архітектура мікроконтролера це сукупність внутрішніх та зовнішніх програмно доступних апаратних ресурсів та системи команд.

Надалі фірма Intel випустила близько 50 моделей на базі операційного ядра мікроконтролера Intel 8051. Одночасно багато інших фірм, таких як Atmel, Philips розпочали виробництво своїх мікроконтролерів розроблених у стандарті MCS-51. Існує також і вітчизняний аналог мікроконтролера Intel 8051 – мікросхема К1816ВЕ51.

2. СТРУКТУРА МІКРОКОНТРОЛЕРА INTEL 8051

Мікроконтроллер Intel 8051 виконаний на основі високорівневої n-МОП технології. Його основні характеристики такі:

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

· Вбудований тактовий генератор (максимальна частота 12 МГц);

· адресний простір пам'яті програм – 64 Кбайт;

· адресний простір пам'яті даних – 64 Кбайт;

· Внутрішня пам'ять програм - 4 Кбайт;

· Внутрішня пам'ять даних - 128 байт;

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

· 2 шістнадцятирозрядні багатофункціональні таймери/лічильники;

· Повнодуплексний асинхронний приймач (послідовний порт);

· Векторна система переривань з двома рівнями пріоритету та п'ятьма джерелами подій.

Малюнок 1 - Структурна схема мікроконтролера Intel 8051

Основу структурної схеми (рис. 1) утворює внутрішня двонаправлена ​​8-розрядна шина, яка пов'язує між собою основні вузли та пристрої мікроконтролера: резидентну пам'ять програм (RPM), резидентну пам'ять даних (RDM), арифметико-логічний пристрій (ALU), блок регістрів спеціальних функцій, пристрій управління (CU), паралельні порти введення/виводу (P0-P3), а також програмовані таймери та послідовний порт.

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

Даний мікроконтролер має вбудовану (резидентну) та зовнішню пам'ять програм та даних. Резидентна пам'ять програм (RPM) має об'єм 4 Кбайт, резидентна пам'ять даних (RDM) – 128 байт.


Залежно від модифікації мікроконтролера RPM виконується як масочного ПЗУ, одноразово програмованого чи репрограммируемого ПЗУ.

За потреби користувач може розширювати пам'ять програм встановленням зовнішнього ПЗП. Доступ до внутрішнього чи зовнішнього ПЗУ визначається значенням сигналу на виведенні ЕА (External Access):

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

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

Зовнішня пам'ять програм і даних може становити 64 Кбайт і адресуватися з допомогою портів P0 і P2. На рис.2 представлена ​​картка пам'яті Intel 8051.

Рисунок 2 - Організація пам'яті Intel 8051

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

Область нижніх адрес пам'яті програм (рис. 3) використовується системою переривань. Архітектура мікросхеми INTEL 8051 забезпечує підтримку п'яти джерел переривань. Адреси, якими передається управління з переривання, називаються векторами переривання.

Малюнок 3 - Карта нижньої області програмної пам'яті

2.2. Арифметико-логічний пристрій

8-бітний арифметико-логічний пристрій (ALU) може виконувати арифметичні операції складання, віднімання, множення та поділу; логічні операції І, АБО, що виключає АБО, а також операції циклічного зсуву, скидання, інвертування і т.п. результат операції (PSW).

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

Найпростіші операції автоматично утворюють “тандеми” для таких операцій, як, наприклад, інкрементування 16-бітних регістрових пар. В ALU реалізується механізм каскадного виконання найпростіших операцій реалізації складних команд. Так, наприклад, при виконанні однієї з команд умовної передачі управління за результатом порівняння в ALU тричі інкрементується лічильник команд (PC), двічі проводиться читання з RDM, виконується арифметичне порівняння двох змінних, формується 16-бітна адреса переходу і приймається рішення про те, робити або не робити перехід за програмою. Усі перелічені операції виконуються лише за 2 мкс.

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

Таким чином, ALU може оперувати чотирма типами інформаційних об'єктів: булевими (1 біт), цифровими (4 біти), байтними (8 біт) та адресними (16 біт). ALU виконується 51 різна операція пересилання або перетворення цих даних. Так як використовується 11 режимів адресації (7 для даних і 4 для адрес), то шляхом комбінування операції та режиму адресації базове число команд 111 розширюється до 255 з 256 можливих при однобайтному коді операції.

2.3. Резидентна пам'ять програм та даних

Резидентні (розміщені на кристалі) пам'ять програм (RPM) та пам'ять даних (RDM) фізично та логічно розділені, мають різні механізми адресації, працюють під управлінням різних сигналів та виконують різні функції.

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

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

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

Таблиця 1

Блок регістрів спеціальних функцій

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

Акумулятор

Регістр-розширювач акумулятора

Слово стану програми

Регістр-покажчик стека

Регістр-покажчик даних

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

Реєстр маски переривань

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

Регістр управління/статусу таймера

Таймер 0 (старший байт)

Таймер 0 (молодший байт)

Таймер 1 (старший байт)

Таймер 1 (молодший байт)

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

Буфер приймача

Реєстр управління потужністю

Примітка.Реєстри, імена яких позначені знаком (*), допускають адресацію окремих бітів.

2.4. Акумулятор та регістри загального призначення

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

У розпорядженні користувача є чотири банки по 8 регістрів загального призначення R0-R7 (рис. 9). Однак можливе використання регістрів лише одного із чотирьох банків, який вибирається за допомогою біт регістру PSW.

2.5. Реєстр слова стану програми та його прапори

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

Таблиця 2

Формат слова стану програми PSW

Ім'я та призначення

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

Прапор допоміжного перенесення. Встановлюється та скидається тільки апаратно при виконанні команд додавання та віднімання та сигналізує про перенесення або позику в биті 3

Прапор 0. Може бути встановлено, скинуто або перевірено програмою як прапор, специфікований користувачем

Вибір банку регістрів. Встановлюється та скидається програмно для вибору робочого банку регістрів (табл. 3)

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

Не використовується

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

Таблиця 3

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

Кордони адрес

Найбільш "активним" прапором PSW є прапор переносу, який бере участь і модифікується в процесі виконання безлічі операцій, включаючи додавання, віднімання та зрушення. Крім того, прапор переносу (CY) виконує функції "бульова акумулятора" в командах, що маніпулюють з бітами. Прапор переповнення (OV) фіксує арифметичне переповнення при операціях над цілими числами зі знаком і уможливлює використання арифметики в додаткових кодах. ALU не керує прапорами селекції банку регістрів (RS0, RS1), їх значення повністю визначається прикладною програмою та використовується для вибору одного з чотирьох реєстрових банків.

У вигляді байта регістр PSW може бути представлений таким чином:

У мікропроцесорах, архітектура яких спирається на акумулятор, більшість команд працюють із ним, використовуючи неявну адресацію. У Intel 8051 справа інакша. Хоча процесор має в основі акумулятор, він може виконувати безліч команд і його участі. Наприклад, дані можуть бути передані з будь-якого осередку RDM будь-який регістр, будь-який регістр може бути завантажений безпосереднім операндом і т. д. Багато логічних операцій можуть бути виконані без участі акумулятора. Крім того, змінні можуть бути інкрементовані, декрементовані та перевірені без використання акумулятора. Прапори та керуючі біти можуть бути перевірені та змінені аналогічно.

2.6. Регістри-покажчики

8-бітний покажчик стека (SP) може адресувати будь-яку область RDM. Його вміст інкрементується перед тим, як дані будуть запам'ятані в стеку під час виконання команд PUSH та CALL. Вміст SP декрементується після виконання команд POP та RET. Подібний спосіб адресації елементів стеку називають передінкрементним/постдекрементним. У процесі ініціалізації мікроконтролера після сигналу RST у SP автоматично завантажується код 07Н. Це означає, що якщо прикладна програма не перевизначає стек, то перший елемент даних у стеку розташовуватиметься в осередку RDM з адресою 08Н.

Двобайтний регістр-покажчик даних DPTR зазвичай використовується для фіксації 16-бітної адреси в операціях із зверненням до зовнішньої пам'яті. Командами мікроконтролера регістр-покажчик даних може бути використаний або як 16-бітний регістр, або як два незалежні 8-бітові регістри (DPH і DPL).

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

Регістри з символічними іменами IP, IE, TMOD, TCON, SCON та PCON використовуються для фіксації та програмної зміни керуючих біт та біт стану схеми переривання, таймера/лічильника, приймача послідовного порту та для управління енергоспоживанням. Детально їх організація буде описана в розділах 1.8-1.12, розглядаючи особливості роботи мікроконтролера в різних режимах.

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

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

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

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

1. PSEN – дозвіл програмної пам'яті,

2. ALE – вихідний сигнал дозволу фіксації адреси,

3. PROG - сигнал програмування,

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

5. VPP – напруга програмування,

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

7. VPD – виведення резервного живлення пам'яті від зовнішнього джерела,

8. XTAL – входи підключення кварцового резонатора.

2.9. Паралельні порти введення/виведення інформації

Усі чотири порти (P0-P3) призначені для введення чи виведення інформації побайтно. Кожен порт містить керовані регістр-клапан, вхідний буфер і вихідний драйвер.

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

Усі висновки порту P3 можна використовувати реалізації альтернативних функцій, перелічених у табл. 4. Ці функції можуть бути задіяні шляхом запису 1 у відповідні біти регістру-засувки (P3.0-P3.7) порту P3.

Таблиця 4

Альтернативні функції порту P3

Ім'я та призначення

Читання. Активний сигнал низького рівня формується апаратно при зверненні до зовнішньої пам'яті даних

Запис. Активний сигнал низького рівня формується апаратно при зверненні до зовнішньої пам'яті даних

Вхід таймера/лічильника 1 або тест-вхід

Вхід таймера/лічильника 0 або тест-вхід

Вхід запиту переривання 1. Сприймається сигнал низького рівня або зріз

Вхід запиту переривання 0. Сприймається сигнал низького рівня або зріз

Вихід передавача послідовного порту в режимі UART. Вихід синхронізації в режимі регістру зсуву

Вхід приймача послідовного порту як UART. Введення/виведення даних у режимі регістру зсуву

Порт 0 є двонаправленим, а порти 1-3 - квазідвунаправленими. Кожна лінія портів може бути використана незалежно для введення чи виведення.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

(родина MCS-51)

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

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

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

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

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

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

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

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

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

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

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

ПЛАН ЛЕКЦІЇ

1. Введення

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

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

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

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

1. Введення

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

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

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

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

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

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

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

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

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

Призначення

Акумулятор

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

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

direct

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

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

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

dataH

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

dataL

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

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

addrL

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

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

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

a15, a14...a0

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

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

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

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


+

*
AND
OR
XOR
/X

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MOVC A,@A+ DPTR ;

MOVC A,@A+ PC .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пам'ять програм


Максимальний обсяг пам'яті становить 64К байт, їх 4К, 8К, 16К чи 32К байт пам'яті (табл.7.3.1) розташовуються на кристалі, решта обсяг — поза кристала.
При напрузі на виведенні ЕА = V CC використовується як внутрішня, і зовнішня пам'ять, при ЕА = V CC = 0 — лише зовнішня пам'ять.
У табл.7.3.1 наведено адреси звернення до пам'яті програмдля зазначених випадків.
Нижня область пам'яті програм відводиться для початку роботи мікроконт-ролера (стартова адреса 0000h після скидання) і під обробку переривань (адреси переривань розташовані з інтервалом 8 байт: 0003h, 000Bh, 0013h і т.д.).


Пам'ять програм доступна лише читання, причому при зверненні:

● до зовнішньої пам'ятіпрограм виробляється сигнал PSEN і завжди формується 16-розрядний адресу.
Молодший байт адреси передається через порт P0 першій половині машинного циклу і фіксується по зрізу строба ALE у регістрі.
У другій половині циклу порт P0 використовується для введення в МК байта даних із зовнішньої пам'яті.
Старший байт адреси передається через порт P2 протягом усього часу звернення до пам'яті (рис.7.1.11);

● до внутрішньої пам'ятісигнал читання не формується та використовуються цикли обміну по внутрішній шині мікроконтролера.

Пам'ять даних

Внутрішню пам'ятьданих можна умовно поділити на три блоки (табл.7.3.2).

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

Особливості організації нижньої області внутрішньої ОЗУвідображені у табл.7.3.3.

Молодші 32 байти внутрішнього ОЗУ з адресами 00h.
1Fh згруповані в чотири банку по вісім регістрів (R0.R7).
Наступні 16 байтів ОЗУ з адресами 20h.
2Fh є область пам'яті об'ємом 8×16= 128 біт, яка допускає звернення до кожного окремого біта.
Для вибору адреси регістру банку використається його ім'я R0.
R7 для вибору банку - біти RS0, RS1 регістру слова стану PSW.

Адреси бітів

Адреси бітівнаведено у табл.7.3.3.

Адресація здійснюється прямимспособом.

Список всіх регістрів спеціальних функцій SFR зі своїми адресами дано в табл.7.2.2.
Для наочності у табл.7.3.

4 наведена карта адрес реєстрівSFRаналізованих мікросхем сімейства MCS-51.
Адреса SFR визначається сукупністю цифр стовпця і рядки в шістнадцятковій системі числення.

Наприклад, регістр CMOD має адресу D9h.

Для регістрів SFR, адреси яких закінчуються на 0h або 8h (вони виділені жирним шрифтом), крім байтовийдопускається побітоваадресація.

При цьому адреса біта, що займає регістрі N-й розряд, визначається як XXh + ​​0Nh, де XXh - адреса регістра SFR, N = 0.7.
Бітові адреси у цій області мають значення від 80Н до FFH.
Наприклад, адреси бітів акумулятора АСС лежать у межах E0h-E7h.

Зовнішня пам'ятьданих (об'ємом до 64 Кбайт) створюється додатковими мікросхем пам'яті, що підключаються до МК.
Для роботи із зовнішньою пам'яттю даних використовуються спеціальні команди, тому адресні простори зовнішньої та внутрішньої пам'яті не перетинаються і, отже, обидва види пам'яті даних можна задіяти одночасно.

Для звернення до осередків зовнішньої пам'яті даних використовуються (рис.7.1.8):
● команди з непрямою адресацією;
● сигнали читання ¯RD та записи ¯WR;
● порт P0 для передачі молодшого байта адреси та прийому/передачі байта даних;
● порт P2 для передачі старшого байта адреси.
Методи адресації.
У системі команд використовується:
● пряма, непряма, реєстрова, непрямо-реєстрова, безпосередня та індексна адресація (непряма адресація за сумою базового та індексного регістрів) операндів-джерел;
● пряма, реєстрова та непрямо-реєстрова адресація операнда призначення.
Поєднання зазначених способів (адресації) забезпечує 21 режим адресації.
У цій та наведених нижче таблицях системи команд використані такі позначення:

Пряма адресація.

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

Реєстрова адресація.


Цей спосіб адресації забезпечує доступ до даних, що зберігаються в одному з восьми регістрів R0.
R7 поточного банку робочих регістрів.
Його також можна використовувати для звернення до регістрів A, В, АВ (здвоєного регістру), регістру-покажчику DPTR та прапору переносу С.
Адреса зазначених регістрів закладено в код операції, завдяки чому скорочується число байт команди.

Непрямо-реєстрова адресація.


У цьому випадку адреса даних зберігається в регістрі-покажчику, місце розташування якого визначено кодом операції.
Цей спосіб адресації використовується для звернення до зовнішнього ОЗП та верхньої половини внутрішнього ОЗП.
Регістрами-покажчиками 8-бітних адрес можуть служити регістри R0, R1 обраного банку робочих регістрів або покажчик стека SР, для 16-бітної адресації використовується тільки регістр покажчика даних DPTR.

Безпосередня адресація.


При цьому способі адресації дані безпосередньо вказані в команді та знаходяться у другому (або у другому та третьому) байтах команди, тобто.
не потрібна адресація до пам'яті.
Наприклад, за командою МОV A,#50 в акумулятор A завантажується число 50.

Індексна адресація.


Цей спосіб являє собою непрямо-регістрову адресацію, при якому адреса байта даних визначається як сума вмісту базового (DPTR або РС) та індексного (А) регістрів.
Спосіб використовується тільки для доступу до програмної пам'яті і тільки в режимі читання;він спрощує перегляд таблиць, зашитих у пам'яті програм.

Структура команд.

Довжина команди становить один (49 команд), два (45 команд) або три (17 команд) байти.
Перший байт команди завжди містить код операції (КО), A другий і третій байти - адреси операндів або безпосередні значення даних.

Як операнди можуть бути використані окремі біти, зошити, байти та двобайтні слова.
Можна виділити 13 типів команд, які наведені в табл.7.3.5:

● A, PC, SP, DPTR, Rn (n = 0, 7) — акумулятор, лічильник команд, покажчик стека, регістр покажчика даних та регістр поточного банку;
● Rm (m = 0, 1) - регістр поточного банку, що використовується при непрямій адре-сації;
● direct — 8-розрядна адреса прямо адресованого операнда;
● bit — адреса прямо адресованого біта;
● rel — відносна адреса переходу;
● addr11, addr16 — 11- та 16-розрядна абсолютна адреса переходу;
● #data8, #data16 — безпосередні дані (операнди) 8- та 16-розрядної довжини;
● A10, A9, A0 – окремі розряди 11-розрядної адреси;
● (.) — вміст осередку пам'яті за адресою, вказаною у дужках;
● СБ, МБ — старший та молодший байти 16-розрядного операнда.

Загальні відомості щодо системи команд.

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

Зокрема абревіатура MOV має 18 різних команд, призначених для обробки трьох типів даних (бітів, байтів, адрес) у різних адресних просторах.
Набір команд має 42 мнемонічні позначення 111 типів команд для конкретизації 33 функцій МК.

З 111 команд 64 виконуються за один машинний цикл, 45 - за два цикли і лише дві команди (MUL - множення і DIV - розподіл) виконуються за 4 цикли. За частоти тактового генератора 12 МГц тривалість машинного циклу (12 тактів) становить 1 мкс. за функціональною ознакоюкоманди можна розбити п'ять груп. Нижче наведено опис команд кожної групи, представлених у вигляді таблиць. Для компактності таблиць виділимо групу команд (табл.7.3.6), виконання яких впливає(позначені знаком +) на стан прапоріврегістру слова стану PSW.

Команди пересилання даних

Команди пересилання можна розбити на окремі підгрупи.
Команди пересилання та обміну даними між осередками внутрішньої пам'яті(Табл.7.3.7).

Команди 1-16, що мають мнемоніку MOV dest, src, призначені для пересиланнябайта або двох байтів (команда 16) даних з джерела src в приймач dest, при цьому:
● для вказівки джерела(src) використовується чотири способи адресації: регістровий (команди 2-4, 6, 8), прямий (команди 1, 7, 9, 11), непрямий (команди 5, 10) і безпосередній (команди 12-16);
● для вказівки приймача(dest) використовується три способи: регістровий (команди 1, 3 ... 5, 9, 12, 14, 16), прямий (команди 2, 7, 8, 10, 13), непрямий (команди 6, 11, 15).

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

Однією з осередків завжди є акумулятор A. В якості іншого осередку при обміні байтами використовується один з регістрів Rn поточного банку, A також осередок внутрішньої пам'яті, що прямо або опосередковано адресується; при обміні зошитами - тільки опосередковано адресований осередок внутрішньої пам'яті.

Так як у всіх МК стек розміщується у внутрішньому ОЗУ, до цієї ж підгрупи включені команди(20, 21) звернення до стеку PUSH src, POP dest.
Ці команди використовують тільки прямий спосіб адресації, записуючи байт у стек або відновлюючи його зі стека.
Слід пам'ятати, що у тих МК, які у ОЗУ отсут-ствуют верхні 128 байт, збільшення стека межі 128 байт веде до втрати даних.

Команди пересилання даних між внутрішньою та зовнішньою пам'яттю даних(Табл.7.3.8).

Ці команди використовують тільки непряму адресацію, при цьому однобайтна адреса може розташовуватися в Р0 або R1 поточного банку регістрів, A двобайтна адреса - в регістрі-покажчику даних DРТR.
За будь-якого доступу до зовнішньої пам'яті роль приймача або джерела операндів у внутрішній пам'яті грає акумулятор А.

Команди пересилання даних із пам'яті програм(Табл.7.3.9).

Ці команди призначені для читання таблиць із програмної пам'яті.

Команда MOVC A,@А + DPTR використовується звернення до таблиці з числом входів від 0 до 255.

Номер необхідного входу в таблицю завантажується в акумулятор, а регістр DPTR встановлюється на точку початку таблиці. Відмінною особливістю іншої команди є те, що як покажчик бази використовується програмний лічильник PC і звернення до таблиці проводиться з підпрограми. Спочатку номер потрібної точки входу завантажується в акумулятор, потім викликається підпрограма з командою MOVC A, @ А + PC. Таблиця може мати 255 входів з номерами від 1 до 255, так як 0 використовується для адреси команди RET виходу з підпрограми.

Команди арифметичної обробки даних. Усі арифметичні команди виконуються над беззнаковими цілими числами. Операції над двома операндами(Табл.7.3.10). В операціях складення ADD, додавання з урахуванням перенесення ADDC та віднімання з урахуванням позики SUBB:

● джерелом одного 8-бітного операнда та приймачем результату служить акумулятор;
● джерелом іншого операнда - або один з робочих регістрів Rn (n = 0-7) поточного банку, або прямо direct або опосередковано @Rm (m = 0, 1) осередок пам'яті ОЗУ, що адресується, або безпосередні дані #data.

Операції множення MUL та поділу DIV виконуються над вмістом реєстрів A і В. При множенні старші 8 розрядів результату записуються в реєстр, молодші 8 розрядів - в регістр A.
Якщо добуток більший за 255, встановлюється прапор переповнення OV; прапор перенесення З завжди скидається. Команда DIV виконує розподіл 8-бітного операнда акумулятора A на 8-бітний операнд регістру.
При розподілі приватна (старші розряди) записується в реєстр в A, залишок (молодші розряди) - в B. Прапори перенесення C і переповнення OV скидаються.
При спробі розподілу на 0 встановлюється прапор переповнення OV. Операція поділу найчастіше використовується для зрушень та перетворення основ чисел.

При розподілі двійкового числа на 2 N відбувається його зсув N біт вліво.
Зайві біти переносяться в регістр.

Операції над однобайтними операндами(Табл.7.3.11).

Команда DA використовується для виконання двійково-десяткових операцій. Команди INC, DEC дозволяють відповідно збільшити чи зменшити на одиницю вміст комірки пам'яті.
Вони застосовні до вмісту акумулятора A, одного з робочих регістрів Rn або осередку пам'яті, адресованої як прямим, так і непрямим способом.
Операція збільшення на одиницю застосовна також до вмісту 16-розрядного регістру-покажчика DPTR.

Команди логічних операцій.

Двомісні операції

(Табл.7.3.12).

Команди AML, ORL, XRL дозволяють виконати три двомісні логічні операції над 8-бітними операндами: ANL - логічне множення (AND), ORL - логічне додавання (OR), XRL - що виключає АБО (XOR).
Операції виконуються над окремими бітами операндів. Джерелом одного з операндів і одночасно приймачем результату служить або акумулятор (А), або прямо адресована комірка пам'яті (direct).
Для джерела іншого операнда використовується реєстровий, прямий, непрямий або безпосередній спосіб адресації.

Одномісні операції

(Табл.7.3.13).
До складу групи входить також ряд одномісних операцій над вмістом акумулятора A: операції очищення (CLR), логічного доповнення або інверсії (CPL), циклічного та розширеного циклічного зрушень на 1 біт вправо (RL, RLC) та вліво (RR, RRC), обміну зошит або циклічного зсуву байта на 4 розряди (SWAP), A також порожня операція (NOP), в результаті якої стан усіх регістрів МК (за винятком програмного лічильника) залишається незмінним.

Команди передачі управління

Команди безумовного переходу

(Табл.7.3.14).

Команди 1-3 відрізняються лише форматом адреси призначення.

Команда LJMP (L - Long) виконує "довгий" безумовний перехід за вказаною адресою addr16, завантажуючи лічильник PC другим і третім байтами команди.
Команда забезпечує перехід у будь-яку точку 64К байтного адресного простору.

Команда AJMP (А - Absolute) забезпечує «абсолютний» перехід за адресою всередині 2К байтної сторінки, початкова адреса якої задається п'ятьма старшими розрядами програмного лічильника PC (спочатку вміст PC збільшується на 2).

Команда SJMP (S - Short) дозволяє здійснити "короткий" безумовний перехід за адресою, який обчислюється додаванням зміщення rel зі знаком у другому байті команди з вмістом лічильника PC, попередньо збільшеного на 2.

Адреса переходу знаходиться в межах -128 +127 байт щодо адреси команди.
Для переходу в будь-яку іншу точку 64-кілобайтного адресного простору може бути використана також команда 4 з непрямою @A+DPTR адресацією.
І тут вміст A інтерпретується як ціле без знака.

Порожня операція (NOP), у результаті якої стан всіх регістрів мікропроцесора (крім програмного лічильника) залишається незмінним.

Команди умовного переходу

(Табл.7.3.15).

За допомогою команд JZ та JNZ здійснюється перехід, якщо вміст акумулятора відповідно дорівнює або не дорівнює нулю.
Адреса переходу обчислюється шляхом додавання відносного знакового зміщення rel з вмістом лічильника команд PC після додавання до нього числа 2 (довжини команди в байтах).

Вміст акумулятора залишається незмінним.
Команди на прапори не впливають.

Команди CJNE (3-6) служать для реалізації умовного переходу за результатом порівняння двох 8-розрядних операндів, розташування яких зазначено в командах.
Якщо їх значення не дорівнюють, здійснюється перехід.

Адреса переходу обчислюється складанням зміщення rel з вмістом лічильника PC, попередньо збільшеним на 3.
В іншому випадку виконується наступна команда.

У графі Алгоритм показано вплив значень порівнюваних 8-розрядних операндів на прапор перенесення З.
Команди DJNZ (7 призначені для організації програмних циклів.

Регістр Rn або прямо (direct) адресується осередок є лічильник по-вторінь циклу, A зміщення rel (у другому і третьому байтах команд) - відносна адреса початку початку циклу.
При виконанні команд вміст лічильника зменшується на одиницю та перевіряється на нуль.
Якщо вміст лічильника не дорівнює нулю, здійснюється перехід на початок циклу.
В іншому випадку виконується наступна команда.

Адреса переходу обчислюється додаванням зміщення з вмістом лічильника, попередньо збільшеним на довжину команди (на 2 або 3).
На прапори команди не впливають.

Команди виклику підпрограм та повернення з програм

(Табл.7.3.16).
Команди LCALL "довгий виклик" та ACALL "абсолютний виклик" здійснюють безумовний виклик підпрограми, розміщеної за вказаною адресою.

Відмінність цих команд від розглянутих вище команд безумовного переходу у тому, що вони зберігають у стеку адресу повернення (вміст лічильника) в основну програму.
Команда повернення з підпрограми RET відновлює зі стека значення вмісту лічильника команд, A команда RETI також дозволяє переривання обслуговуючого рівня.

У командах передачі управління широко використовується відносна адресація, яка підтримує переміщувані програмні модулі.
Як відносна адреса виступає 8-розрядне зміщення rel зі знаком, що забезпечує розгалуження від поточного положення лічильника PC в обидві сторони на ±127 байт.

Для переходу в будь-яку іншу точку 64К-байтного адресного простору може бути використана або пряма адреса addr16, або непряма адреса @A+DPTR.
У разі вміст A інтерпретується як ціле без знака.

Варіант короткої прямої адресації addr11 всередині 2К-байтної поточної сторінки введений для сумісності з архітектурою МК48.

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

Коли МК51 розпізнає запит на переривання, він генерує одну з команд типу LCALL addr16, що автоматично забезпечує запам'ятовування адреси повернення стеку.
Однак на відміну від МК48 в МК51 немає інформації, що автоматично зберігається, про стан.

При цьому логіка переривань перестає спрацьовувати на запити рівня, прийнятого до обслуговування.
Для зниження рівня переривання служить команда повернення з переривання RETI, яка крім операції, еквівалентної RET, включає операцію дозволу переривання даного рівня.
До типових умовних операцій МК51 відносяться також операції JZ, JNZ.
Однак з'явилася нова операція «Порівняти і перейти» CJNE.

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

По суті, команда CJNE є елементом оператора мов високого рівня типу CASE.

Подальший розвиток здобула команда DJNZ.
Тепер програміст як лічильник може використовувати не тільки один з робочих регістрів Rn, але і будь-яку комірку пам'яті DSEG.

Команди бітових операцій.

Група складається з 12 команд, що дозволяють виконувати операції над одним або двома бітами (скидання, установку, інверсію біта, A також логічні І і АБО), і 5 команд, призначених для реалізації умовних переходів (табл.7.3.17).

Команди забезпечують пряму адресацію 128 бітів, розташованих у шістнадцяти осередках внутрішнього ОЗУ з адресами 20h.
2Fh (табл.7.3.3), та 128 бітів, розташованих у регістрах спеціального призначення, адреси яких кратні восьми (виділені в табл.7.3.4 напівжирним шрифтом).

При виконанні операцій над двома однорозрядними операндами як логічний акумулятор використовується тригер регістра PSW, що зберігає прапор переносу C (табл.7.1.2).

Команди MOV (1,2) здійснюють пересиланнябіта з однієї прямо адресованої бітової осередки внутрішнього ОЗУ в тригер C або у зворотному напрямку.
Команди CRL (3, 4), SETB (5, 6) відповідно скидаютьв нуль або встановлюютьв одиницю прапор перенесення C або вказаний біт.
За допомогою команд CPL, ANL, ORL (7-12) виконуються логічні операції інверсії, складання та множення.

До групи входять також команди (13-17) реалізації операцій умовних переходів з відносним 8-разрядным усуненням rel.
Переходи можуть бути реалізовані як при встановленому биті або прапорі перенесення (команди 13, 16), і при скинутому (команди 14, 17).

Команда JBC крім переходу за адресою, що вичислюється, при виконанні умови (біт) = 1 виробляє скидання цього біта в нульовий стан.
При виконанні команд умовних переходів адреса переходу обчислюється після додавання до вмісту лічильника чисел 3 або 2 (відбивають число байт у команді).

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

gastroguru 2017