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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Малюнок 1. Структурна схема контролера К1830ВЕ751

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

Блок управління та синхронізації

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

  • пристрій формування часових інтервалів,
  • логіка введення-виведення,
  • регістр команд,
  • регістр управління споживанням електроенергії,
  • дешифратор команд, логіка управління ЕОМ.

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

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

Реєстр керування споживанням (PCON) дозволяє зупиняти роботу мікроконтролера для зменшення споживання електроенергії та зменшення рівня перешкод від мікроконтролера. Ще більшого зменшення споживання електроенергії і зменшення перешкод можна досягти, зупинивши генератор мікроконтролера, що задає. Цього можна досягти за допомогою перемикання біт регістру керування споживанням PCON. Для варіанта виготовлення за технологією n-МОП (серія 1816 або іноземних мікросхем, у назві яких у середині відсутня буква "c") регістр керування споживанням PCON містить тільки один біт, що керує швидкістю передачі послідовного порту SMOD, а біти керування споживанням електроенергією відсутні.

Разом із статтею "Архітектура мікроконтролерів MCS-51" читають:


http://сайт/MCS51/tablms.php


http://сайт/MCS51/SysInstr.php


http://сайт/MCS51/port.php

В даний час різними фірмами випускається безліч модифікацій та аналогів цього сімейства, як фірмою Intel, так і іншими виробниками, тактова частота та обсяг пам'яті зросли в десятки разів і продовжують підвищуватися. Доповнюється і набір вбудованих у БІС модулів, у велику кількість сучасних моделей вбудований рези- дентний швидкодіючий АЦП, що має до 12, а зараз може бути й більше розрядів. Але в основі сімейства МСS51 БІС 8051, 80С51, 8751, 87С51, 8031, 80С31 фірми Intel, перші зразки яких були випущені в 1980 році.

Мікроконтролери сімейства MCS51 виконані за високоякісною n-МОП технологією (серія 8ХХХ, аналог - серія 1816 в Росії та Білорусії) та k-МОП технології (серія 8ХСХХ, аналог - серія 1830). Другий символ, наступний за 8, означає: 0 – РПЗУ на кристалі немає, 7 – РПЗУ об'ємом 4К з ультрафіолетовим стиранням. Третій символ: 3 – ПЗУ накристаленет, 5 – якщо нетРПЗУ, то на кристалі масочне ПЗУ.

І так 80С51 - БІС за k-МОП технології з масковим ПЗУ на кристалі, 8031 ​​- БІС n-МОП без пам'яті програм (ПЗУ, РПЗУ) на кристалі, 8751 - БІС n-МОП з резидентним (розміщеним на кристалі) РПЗУ з ультрафіолетовим стиранням. Ми далі і розглядатимемо БІС 8751, роблячи, якщо потрібно застереження про відмінності інших схем, наводячи ті параметри, які були опубліковані для перших серійних БІС. Додаткову інформацію про всі сучасні модифікації Ви, при необхідності, можете знайти у фірмових довідниках та технічній документації.

А. Загальні характеристики та призначення висновків

Основу сімейства MCS51 складає п'ять модифікацій МК (мають ідентичні основні характеристики), основна відмінність між якими полягає у реалізації пам'яті програм та потужності споживання (див. таблицю 3.1). Мікроконтолер восьмирозрядний, тобто. має команди обробки восьмирозрядних слів, має Гарвардську архітектуру, тактова частота у базових зразків сімейства складає 12 МГц.

Таблиця 3.1.

Мікро-схеми

Внутрішня пам'ять програм, байт

Тип пам'яті програм

Внутрішня пам'ять даних, байт

Тактова частота, МГц

Струм споживання, мА

МК 8051 і 80С51 містять масочно-программируемое під час виготовлення кристала ПЗУ пам'яті програм ємністю 4096 байт і розраховані застосування у масової продукції. МК 8751 містить РПЗУ ємністю 4096 байт з ультрафіолетовим стиранням і зручна на етапі розробки системи при налагодженні програм, а також при виробництві невеликими партіями або при створенні систем, що вимагають в процесі експлуатації пе-

ріодичного підстроювання.

МК 8031 ​​та 80С31 не містять вбудованої пам'яті програм. Вони, як і описані раніше модифікації, можуть використовувати до 64 Кбайт зовнішньої пам'яті програм і ефективно використовуватися в системах, що вимагають істотно більшого за обсягом (ніж 4 Кбайт на кристалі) ПЗП пам'яті програм.

Кожен МК сімейства містить резидентну пам'ять даних ємністю 128 байт із можливістю розширення загального обсягу оперативної пам'яті даних до 64 Кбайт за рахунок використання зовнішніх ІС ОЗП.

    центральний восьмирозрядний процесор;

    пам'ять програм обсягом 4 Кбайт (тільки 8751 та 87С51);

    пам'ять даних обсягом 128 байт;

    чотири восьмирозрядні програмовані порти вводу-виводу;

    два 16-бітових багаторежимних таймера/лічильника;

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

    послідовний інтерфейс, що включає універсальний дуплексний прийомопередавач, здатний функціонувати в чотирьох режимах;

    генератор тактовий.

Система команд МК містить 111 базових команд з форматом 1, 2, або 3 байти. Мікроконтролер має:

    32 регістру загального призначення РОН, організованих як чотири банки по вісім регістрів з іменами R0… R7, вибір того чи іншого банку визначається програмою шляхом встановлення відповідних біт у регістрі стану програми PSW;

    128 програмно-керованих прапорів (бітовий процесор, див. далі);

    набір регістрів спеціальних функцій, керуючих елементами МК. Існують такі режими роботи мікроконтролера:

1). Загальне скидання. 2).Нормальне функціонування. 3).Режим зниженого енергоспоживання та режимхолостого ходу. 4). Режим програмування резидентного РПЗП, якщо воно є.

Ми тут основну увагу приділимо першим двом режимам роботи, докладний опис складу роботи МК у всіх режимах наведено в додатку П1.

РОН та зона бітового процесора розташовані в адресному просторі резиден- тної ОЗП з адресами від 0 до 80h.

У верхній зоні адрес резидентної оперативної пам'яті розташовані регістри спеціальних функцій (SFR, Special Function Registers). Їх призначення наведено у табл. 3.2.

Таблиця 3.2.

Позначення

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

Акумулятор

Реєстр В

Реєстр стану програми

Покажчик стека

Покажчик даних. 2 байти:

Молодший байт

Старший байт

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

Реєстр дозволу переривань

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

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

Таймер/лічильник 0. Старший байт

Таймер/лічильник 0. Молодший байт

Таймер/лічильник 1. Старший байт

Таймер/лічильник 1. Молодший байт

Управління послідовним портом

Буфер послідовного порту

Управління споживанням

* - регістри, що допускають побітову адресацію

Стисло розглянемо функції регістрів SFR, наведених у таблиці 3.2.

Акумулятор АCC - Регістр акумулятора. Команди, призначені для роботи.

ти з акумулятором, використовують мнемоніку "А", наприклад, MOV А, Р2 . Мнемоніка "АСС" використовується, наприклад, при побітовій адресації акумулятора. Так, символічне ім'я п'ятого біта акумулятора при використанні асемблера А5М51 буде наступним: АСС. 5. .

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

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

Таблиця 3.3.

Позначення

Таблиця 3.4.

Позначення

Призначення бітів

Доступ до бити

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

Апаратно чи програмно

Прапор додаткового перенесення. Апаратно встановлюється/скидається під час виконання інструкцій додавання або віднімання для вказівки перенесення або позики в биті 3 при утворенні молодшого напівбайта результату (D0-D3).

Апаратно чи програмно

Прапор 0. Прапор, який визначається користувачем.

Програмно

Програмно

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

Програмно

Банк 0 з адресами (00Н - 07Н) Банк 1 з адресами (08Н - 0FН) Банк 2 з адресами (10Н - 17Н) Банк 3 з адресами (18Н - 1FН)

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

Апаратно чи програмно

Резервний. Містить тригер, доступний за записом та читанням, який можна використовувати

Біт парності. Апаратно скидається або встановлюється у кожному циклі інструкцій для вказівки парної чи непарної кількості розрядів акумулятора, що перебувають у стані "1".

Апаратно чи програмно

Покажчик стека - 8-бітовий регістр, вміст якого інкрементується перед записом даних у стек при виконанні команд PUSH та CALL. При початковому скиданні покажчик стека встановлюється 07Н, а область стека в ОЗУ даних починається з адреси 08Н. При необхідності шляхом перевизначення покажчика стека область стека може бути розташована в будь-якому місці внутрішнього пам'яті даних мікроконтролери.

Покажчик даних DPTR складається з старшого байта (DPH) та молодшого байта

(DPL). Містить 16-бітову адресу при зверненні до зовнішньої пам'яті. Може використовувати-

ватись як 16-бітовий регістр або як два незалежні восьмибітові регістри.

Порт0 - ПортЗ. Окремими бітами регістрів спеціальних функцій Р0, Р1, Р2, РЗ є біти - "засувки" висновків портів Р0, Р1, Р2, РЗ.

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

Реєстри таймер. Реєстрові пари (ТН0, ТL0) і (ТН1, TL1) утворюють 16-

бітові рахункові регістри відповідно таймера/лічильника 0 та таймера/лічильника 1.

Реєстри управління. Регістри спеціальних функцій IР, IЕ, ТМOD, ТСОN, SCON і РСОN містять біти управління та біти стану системи переривань, тай-

заходів/лічильників та послідовного порту. Вони будуть детально розглянуті далі.

RxD TxD INT0 INT1 T0 T1 WR

P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

RST BQ2 BQ 1 EA

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7

МК при функціонуванні забезпечує:

    мінімальний час виконання команд додавання-1 мкс;

    апаратне множення та поділ з мінімальним часом виконання - 4 мкс.

У МК передбачено можливість завдання частоти внутрішнього генератора за допомогою кварцу, LС-ланцюжка або зовнішнього генератора.

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

Найважливішою та відмінною рисою архітектури сімейства MCS51 є те, що АЛУ може поряд з виконанням операцій над 8-розрядними типами даних маніпулювати однорозрядними даними. Окремі програмно-доступні біти можуть бути встановлені, скинуті або замінені їх доповненням, можуть пересилатися, перевірятися та

Рис.3.2. Зовнішні висновки

мікроконтролера

використовуватись у логічних обчисленнях. Тоді як підтримка простих типів даних (при сущ-

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

Схемотехнічне зображення мікроконтролера представлено на рис. 3.2. У базовому варіанті він упакований у 40-вивідний DIP корпус. Розглянемо призначення висновків.

Почнемо з висновків харчування «0 В» і «5 В» , За якими він отримує основне харчування. Струм споживання наведено в табл. 3.1.

Висновок «RST» - Скидання мікроконтролера. При подачі цього висновку активного високого рівня запускається режим спільного скидання та МК робить такі дії:

Встановлює лічильник команд PC та всі регістри спеціальних функцій, крім засувок портів Р0-РЗ, покажчика стека SP та регістра SBUF, в нуль;

    покажчик стека приймає значення, що дорівнює 07Н;

    забороняє всі джерела переривань, роботу таймерів-лічильників та послідовного

    вибирає БАНК 0 ОЗУ, готує порти Р0-РЗ для прийому даних та визна-

поділяє висновки ALE та РМЕ як входи для зовнішньої синхронізації;

      у регістрах спеціальних функцій PCON, IP та IE резервні біти набувають випадкових значень, а всі інші біти скидаються в нуль;

      у регістрі SBUF встановлюються випадкові значення.

      встановлює фіксатори-засувки портів Р0-РЗ "1".

Стан регістрів мікроконтролера після скидання наведено в таблиці 3.5.

Таблиця 3.5.

Інформація

Невизначена

0ХХХ0000В для k-MOП 0XXXXXXXB для n-МОП

Висновок RST має й альтернативну функцію. Через нього подається резервне харчування для збереження постійним вмісту ОЗУ мікроконтролера при знятті основного.

Висновки BQ1, BQ2 призначені для підключення кварцового резонатора, що визначає тактову частоту роботи МК.

Висновок ЕА` (E xternal A dress зовнішній адреса) - призначений для активізації режиму читання керуючих кодів із зовнішньої пам'яті програм, при подачі цього висновку активного низького рівня. Висновок має і альтернативне призначення (функцію). На нього подається напруга програмування РПЗУ як програмування.

Висновок PME (P rogram M emory E nable Дозвіл пам'яті програм) - призначений для керування циклом читання з пам'яті програм і автоматично активізується МК у кожному машинному циклі.

Висновок ALE (A dress L ength E nable Дозвіл молодшого адреси) стробує виведення молодшої частини адреси по порту Р0. Висновок використовується і при програмуванні РПЗУ, при цьому на нього подається стробуючій процес програмування імпульс.

МК містить чотири групи портів: Р0, Р1, Р2 і Р3. Це 40-виводів мікроконтролера, що залишилися. Ці порти можуть служити для побитного введення - виведення інформації, але крім цього кожен з них має свою спеціалізацію. Узагальнена функціональна схема порту представлена ​​на рис. 3.3. Порт містить вихідні ключі на польових транзисторах, підключені до виводу, перемикач функцій, клямку на D-тригері та логіку управління. У засувку по внутрішній шині МК може бути записана одиниця або нуль. Ця інформація через перемикач функцій надходить на вихідні ключі та виведення МК. У стані одиниці обидва транзистори N і N1 закриті, але відкрито N2. У стані нуля N відкриває-

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

бути попередньо записано

Від внутрішньо-

Управління Засувка

Перемикач функцій

Vcc

Вихідні

одиниця. При активізації лінії «читання засувки» на виході осередку «І», до якої підключена ця лінія

ній шини МК D Q

Запис у клямку C Q

Читання засувки

Виведення порту

ється стан засувки, що надходить на внутрішню шину МК, при активізації

"Читання виведення" - стан зовнішнього виведення порту.

Порт Р0 - Універсальний двонаправлений порт

введення-виведення. За цим портом

закріплено функцію організації зовнішніх шин адрес і

Мал. 3.3. Функціональна схема порту мікроконтролера

даних для розширення пам'яті програм та пам'яті даних

мікроконтролера. Коли йде звернення до зовнішньої пам'яті програм або виконується команда звернення зовнішньої пам'яті даних, на висновках порту встановлюється молодша частина адреси (А0…А7), яка стробується високим рівнем виведення ALE. Потім, при запису в пам'ять даних, інформація, що записується з внутрішньої шини МК надходить на висновки порту Р0. В операціях читання, навпаки, інформація з висновків порту надходить на внутрішню шину. Особливістю порту Р0 є відсутність «підтягуючого» транзистора N2, що забезпечує подачу живлення на висновок. При записі в клямку порту одиниці він просто переводиться у високоімпедансний стан, що необхідно для нормальної роботи шини даних. При необхідності запитувати через виведення будь-які зовнішні пристрої слід передбачати зовнішні резистори від ланцюгів живлення на виведення порту.

Порт Р1 – універсальний двонаправлений порт введення-виведення без альтернативних функцій.

Порт Р2 – універсальний двонаправлений портвводу-виводу, який як альтернативна функція здійснює видачу старшої частини адреси (А8…А15) при зверненні до зовнішньої пам'яті.

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

Р3.0 RxD (R ead e X ternal D ate, читати зовнішні дані) – вхід вбудованого послідовного приймача.

Р3.1 ТxD (T ype e X ternal D ate, передавати зовнішні дані) – вихід вбудованого послідовного приймач-передавача.

Р3.2 INT0` (INT errupt, переривання) – вхід зовнішнього переривання 0.

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

Р3.4 С/T0 - Вхід нульового вбудованого таймера/лічильника.

Р3.5 С/T1 - Вхід першого вбудованого таймера/лічильника.

Р3.6 WR` (W rite, писати) – виведення управління циклом запису у пам'яті даних.

Р3.7 RD` (R ead, читати) – виведення керування циклом читання з пам'яті даних.

Висновки порту Р1, Р2 і Р3 здатні в одиниці видавати струмоколо 0.2мА і приймати в нулі струм 3 мА, висновки порту Р0 потужніші і здатні в одиниці видавати струм близько 0.8мА і приймати в нулі струм 5 мА. Коротку інформацію про призначення висновків мікроконтролера наведено в таблиці 3.6.

Таблиця 3.6.

Позначення

Призначення висновку

8-розрядний двонаправлений порт Р1. Вхід адреси А0-А7 під час перевірки внутрішнього ПЗУ (РПЗУ)

Вхід вихід

Сигнал загального скидання. Виведення резервного живлення ОЗП від зовнішнього джерела (для 1816)

8-розрядний двонаправлений порт P3 з додатковими функціями

Вхід вихід

Послідовні дані приймача - RхD

Послідовні дані передавача - ТхD

Вхід зовнішнього переривання 0- INТ0`

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

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

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

Вихід стробуючого сигналу під час запису у зовнішню пам'ять даних: - WR`

Вихід стробуючого сигналу під час читання із зовнішньої пам'яті даних – RD`

Висновки для підключення кварцового резонатора.

вихід вхід

Загальний висновок

8-розрядний двонаправлений порт Р2. Вихід адреси А8-А15 у режимі роботи із зовнішньою пам'яттю. У режимі перевірки внутрішнього ПЗУ висновки Р2.0 – Р2.6 використовуються як вхід адреси А8-А14. Висновок Р2.7 - дозвіл на читання ПЗУ.

Вхід вихід

Дозвіл програмної пам'яті

Вихідний сигнал дозволу фіксації адреси. Під час програмування РПЗУ сигнал: PROG

Вхід вихід

Блокування роботи із внутрішньою пам'яттю. При програмуванні РПЗП подається сигнал UРR

Вхід вихід

8-розрядний двонаправлений порт Р0. Шина адреси/даних г роботи із зовнішньою пам'яттю. Вихід даних D7-D0 у режимі перевірки внутрішнього ПЗП (РПЗП).

Вхід вихід

Виведення живлення від джерела напруги +5В

ПЛАН ЛЕКЦІЇ

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 байти.

АРХІТЕКТУРА МІКРОКОНТРОЛЕРІВ СІМЕЙСТВА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 не можуть бути використані для цієї мети у випадку, якщо система має зовнішню пам'ять, зв'язок з якою організується через загальну шину адреси/даних, що розділяється, що працює в режимі тимчасового мультиплексування.

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




Top