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

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

У витоків виробництва мікроконтролерів стоїть фірма 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, що підвищують і знижують.

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

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

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

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

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

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

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

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

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

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

АРХІТЕКТУРА МІКРОКОНТРОЛЕРІВ СІМЕЙСТВА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. Умовні переходи.. 44

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 не можуть бути використані для цієї мети у випадку, якщо система має зовнішню пам'ять, зв'язок з якою організується через загальну шину адреси/даних, що розділяється, що працює в режимі тимчасового мультиплексування.

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

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

Основою мікроконтролера (див. рис. 1) є 8-ми бітовий Арифметично-Логічний пристрій (АЛУ). Пам'ять МК має Гарвардську архітектуру, тобто. логічно розділена: на пам'ять програм – ПП (внутрішню або зовнішню), адресовану 16-ти бітовим лічильником команд (СК) та пам'ять даних – внутрішню (Резидентна пам'ять даних – РПД) 128 (або 256) байт, а також зовнішню (Зовнішня пам'ять даних) - ВПД) до 64 Кбайт. Фізично пам'ять програм реалізована на ПЗП (доступна лише з читання), а пам'ять даних – на ОЗУ (можливий запис та читання даних).

Прийом та видача зовнішніх сигналів здійснюється через 4 восьмибітові порти Р0..Р3. При зверненні до зовнішньої пам'яті програм (ЗПС) чи пам'яті даних (ВПД) порти Р0 і Р2 використовуються як мультиплексована зовнішня шина Адреса/Дані. Лінії порту Р3 можуть виконувати альтернативні функції (див. табл. 1).

16-бітовий регістр DPTR формує адресу ВПД або базову адресу Пам'яті програм у команді перетворення Акумулятора. Регістр DPTR може також використовуватися як два незалежні 8-мі бітові регістри (DPL і DPH) для зберігання операндів.

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

Звернення до регістрів спеціальних функцій - РРФ (SFR - на рис. 1 вони обведені пунктирною лінією) можливе тільки з використанням прямої байтової адресації в діапазоні адрес від 128 (80h) і більше.


Резидентна пам'ять даних (РПД) у перших моделях мікроконтролерів сімейства MCS-51 мала обсяг 128 байт. Молодші 32 байти РПД є одночасно і регістрами загального призначення – РОН (4 банки по 8 РОНів). Програма може звернутися до одного з 8-ми РОНів активного банку. Вибір активного банку РОНів здійснюється програмуванням двох біт у регістрі стану процесора – PSW.


Таблиця 1 - Призначення висновків MCS-51

№ вив. Позначення Призначення
1..8 Р1 8-ми бітовий квазідвунаправлений порт вводу/виводу
9 RST

Сигнал скидання (активний рівень – високий);

Сигнал RST обнулює: PC та більшість Реєстрів Спеціальних Функцій (SFR), забороняючи всі переривання та роботу таймерів; вибирає Банк РОНів 0; записує в порти Р0_Р3 "всі одиниці", готуючи їх на введення; записує код 07H в покажчик стека (SP);

10..17

8-ми бітовий квазідвунаправлений порт вводу/виводу; після запису у відповідний розряд "1" – виконує додаткові (альтернативні) функції:

Вхід послідовного порту – RxD;

Вихід послідовного порту – TxD;

Вхід зовнішнього переривання 0 - ~ INT0;

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

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

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

Вихід строб. сигналу під час запису у ВПД – ~ WR;

Вихід строб. сигналу під час читання з ВПД – ~ RD;

18, 19 X1, X2 Висновки для підключення кварцового резонатора або LC-контуру;
20 GND Загальний висновок;
21..28 P2 8-ми бітовий квазідвунаправлений порт введення/виводу; або вихід адреси A в режимі роботи із зовнішньою пам'яттю (ЗПС або ВПД);
29 PME Строб читання Зовнішньої Пам'яті Програм, видається тільки при зверненні до зовнішнього ПЗУ;
30 ALE Строб адреси Зовнішньої пам'яті (ЗПС або ВПД);
31 ЕА Відключення РПП, рівень "0" на цьому вході перекладає МК на вибірку команд тільки з ВПП ;
39..32 Р0 8-ми бітовий двонаправлений порт введення/виведення; при зверненні до Зовнішньої Пам'яті видає адреси A (які записуються у зовнішній регістр за сигналом ALE), а потім обмінюється байтом синхронно із сигналом ~PME (для команд) або ~WR,~RD (для даних у ВПД), при зверненні до Зовнішньої Пам'яті в регістр порту Р0 записуються всі одиниці, руйнуючи інформацію, що зберігається там;
40 Ucc Виведення напруги живлення

Переключення банків РОНів спрощує виконання підпрограм та обробку переривань, т.к. не потрібно пересилати в стек вміст РОНів основної програми при виклику підпрограми (достатньо у підпрограмі перейти до іншого активного банку РОНів).

Звернення до РПД можливе з використанням непрямої або прямої байтової адресації (пряма байтова адресація дозволяє звернутися тільки до перших 128 байт РПД).

Розширена область РПД (у мікроконтролерів сімейства MCS-52 та наступних сімейств) з адреси 128 (80h) до 255 (FFh) може адресуватися лише з використанням непрямого методу адресації.

Таблиця 2 – Блок Реєстрів Спеціальних Функцій (s f r)

Менімо-код Найменування
0E0h * ACC Акумулятор
0F0h * B Регістр розширювач акумулятора
0D0h * PSW Слово стану процесора
0B0h * P3 Порт 3
0A0h * P2 Порт 2
90h * P1 Порт 1
80h * P0 Порт 0
0B8h * IP Реєстр пріоритетів переривань
0A8h * IE Реєстр маски переривань
99h SBUF Буфер послідовного приймача-передавача
98h * SCON Регістр управління/статусу послідовного порту
89h TMOD Реєстр режимів таймерів/лічильників
88h * TCON Регістр управління/статусу таймерів/лічильників
8Dh TH1 Таймер 1 (старший байт)
8Bh TL1 Таймер 1 (молодший байт)
8Ch TH0 Таймер 0 (старший байт)
8Ah TL0 Таймер 0 (молодший байт)
83h DPH Реєстр-покажчик даних (DPTR) (старший байт)
82h DPL Реєстр-покажчик даних (DPTR) (молодший байт)
81h SP Реєстр-покажчик стека
87h PCON Реєстр управління потужністю споживання

2. ПРОГРАМНА МОДЕЛЬ MCS–51


ТИПИ КОМАНД MCS-51

Майже половина команд виконується за один машинний цикл (МЦ). При частоті кварцового генератора 12 МГц час виконання такої команди – 1 мкс. Інші команди виконуються за 2 машинних цикли, тобто. за 2мкс. Тільки команди множення (MUL) та поділу (DIV) виконуються за 4 машинні цикли.

За час одного машинного циклу відбувається два звернення до Пам'яті Програм (внутрішньої чи зовнішньої) для зчитування двох байтів команди або одне звернення до Зовнішньої Пам'яті Даних (ВПД).

3. МЕТОДИ (СПОСОБИ) АДРЕСАЦІЇ MCS–51

1. РЕЄСТРУВА АДРЕСАЦІЯ - 8-ми бітовий операнд знаходиться в РОНЕ обраного (активного) банку регістрів;

2 НЕПОСЕРЕДНЯ АДРЕСАЦІЯ (позначається знаком - #) - операнд знаходиться в другому (а для 16-ти бітового операнда і в третьому) байт команди;

3 НЕХІДНА АДРЕСАЦІЯ (позначається знаком – @) – операнд знаходиться в Пам'яті Даних (РПД або ВПД), а адреса осередку пам'яті міститься в одному з РОНів непрямої адресації (R0 або R1); в командах PUSH і POP адреса міститься в покажчику стека SP; регістр DPTR може містити адресу ВПД обсягом до 64К;

4 ПРЯМА БАЙТОВА АДРЕСАЦІЯ – (dir) – використовується для звернення до осередків РПД (адреси 00h…7Fh) та до регістрів спеціальних функцій SFR (адреси 80h…0FFh);

5 ПРЯМА БИТОВА АДРЕСАЦІЯ – (bit) – використовується для звернення до окремо адресованих 128 біт, розташованих у осередках РПД за адресами 20H ... 2FH і до окремо адресованих бітів регістрів спеціальних функцій (див. табл. 3 і програмну модель);

6 НЕДІЛЬНА ІНДЕКСНА АДРЕСАЦІЯ (позначається знаком – @)– спрощує перегляд таблиць у Пам'яті Програм, адреса ПП визначається за сумою базового регістру (PC або DPTR) та індексного регістру (Акумулятора);

7 НЕЯВНА (ВБУДОВА) АДРЕСАЦІЯ – код команди містить неявну (за замовчуванням) вказівку на один з операндів (найчастіше на Акумулятор).

4. ФОРМАТ СЛОВА СТАНУ ПРОЦЕСОРУ (PSW)

C - прапор перенесення (CARY) або позики, виконує також функції "бульового акумулятора" в командах, що оперують з бітами;

AC – прапор допоміжного (додаткового) перенесення – встановлюється в "1", якщо в команді додавання (ADD, ADDC) було перенесення з молодшого зошита до старшої (тобто з 3-го біта до 4-го біта);

F0 – прапор користувача – встановлюється, скидається та перевіряється програмно;

RS1 RS0 Банк Адреса (dir)
0 0 0 00h..07h
0 1 1 08h..0Fh
1 0 2 10h..17h
1 1 3 18h..1Fh

RS1,RS0 - Вибір банку регістрів:

OV – Прапор арифметичного переповнення; його значення визначається операцією "Виключає АБО" сигналів вхідного та вихідного переносів старшого розряду АЛУ; одиничне значення цього прапора вказує на те, що результат арифметичної операції у додатковому коді вийшов за допустимі межі: –128…+127; під час виконання операції розподілу прапор OV скидається, а разі розподілу на нуль – встановлюється; при множенні прапор OV встановлюється якщо результат більше 255 (0FFH);

Розряд PSW - Резервний, містить тригер, доступний за записом або читанням;

P – прапор паритету – є доповненням кількості одиничних бітів в акумуляторі до парного; формується комбінаційною схемою (програмно доступний тільки за читанням).

У мікроконтролерах MCS-51 відсутній прапор "Z". Але в командах умовного переходу (JZ, JNZ) перевіряється комбінаційною схемою поточний (нульовий або ненульовий) вміст акумулятора.

Усі команди пересилок та обміну операнда можуть здійснюватися через Акумулятор (див. рис. 3). Причому пересилання з/в Зовнішньої Пам'яті (Пам'яті Програм або Пам'яті Даних) можуть здійснюватись лише через Акумулятор.

Більшість пересилок можуть здійснюватися також через байт (dir). Існують навіть пересилання dir – dir (див. рис. 3).

Відсутні пересилки з РВН в РОН можуть бути реалізовані як пересилки з РВН в прямоадресований байт dir (з урахуванням того, що РОН розташовані в початковій області Резидентної Пам'яті Даних, комірки якої можуть адресуватися як dir).

Команди обміну XCH дозволяють пересилати байти без руйнування обох операндів.

Арифметичні команди виконуються лише в акумуляторі. Тому перший операнд необхідно попередньо помістити в акумулятор і потім скласти або відняти другий операнд. Результат міститься в акумуляторі.


Команда віднімання SUBB виконується тільки з позикою (тобто від результату віднімається і прапор Сary). Тому для виконання команди віднімання без позики необхідно попередньо виконати команду очищення прапора С (CLRC).

Команда множення однобайтових операндів - MULAB - розміщує двобайтовий (16 біт) результат: молодший байт - в Акумулятор, старший байт - в регістр.

Результат виконання команди поділу однобайтових операндів – DIVAB – міститься: приватне – а Акумулятор, залишок – у регістр.

Арифметична команда INC додає до вибраного операнда одиницю. Арифметична команда DEC віднімає з обраного операнда одиницю. Команда десяткової корекції Акумулятора (DAA) допомагає складати двійково-десяткові числа (BCD-числа) без переведення їх у шістнадцятковий формат (hex-формат). Вихідні операнди мають бути обов'язково в BCD-форматі, тобто. у кожному зошиті одного байта знаходяться лише числа від 0 до 9 (там не можуть бути шістнадцяткові числа: A, B, C, D, E, F). Тому в одному байті можуть бути числа від 00 до 99 для упакованих BCD-чисел або числа від 0 до 9 для невпакованих BCD-чисел.

Команда DA A – десяткова корекція виконує дії над вмістом Акумулятора після складання BCD-чисел у процесорі (числа складалися за законами шістнадцяткової арифметики) наступним чином (див. приклад):

· якщо вміст молодшого зошита акумулятора більше 9 або встановлений прапор допоміжного перенесення (AC = 1), то до вмісту акумулятора додається 6 (тобто відсутні шість цифр в hex-форматі);

· якщо після цього вміст старшого зошита акумулятора більше 9 або встановлено прапор C, то число 6 додається до старшого зошита акумулятора.

Команду десяткової корекції DA A не застосовують після команди інкременту (INC), тому що команда інкременту не впливає (не змінює) на прапори С та АС.

Логічні команди:

Логічне "І" – ANL,

Логічне "АБО" - ORL,

Логічна команда "ВИКЛЮЧНЕ АБО" - XRL - виконуються в Акумуляторі (як і арифметичні), але є можливість виконати логічні команди також і в байті, що прямо адресується (dir). При цьому другий операнд може бути:

В акумуляторі або

Безпосередній операнд у команді.

Команди обертання (RR A, RL A) і команди обертання через прапор CARY (RRC A, RLC A) циклічно зрушують вміст Акумулятора на 1 біт. Посилання бітових операндів здійснюються тільки через прапор С.

 

 

Це цікаво: