THE BELL

Є ті, хто прочитав цю новину раніше за вас.
Підпишіться, щоб отримувати статті свіжими.
Email
Ім'я
Прізвище
Як ви хочете читати The Bell
Без спаму

Архітектура сімейства MCS-51 значною мірою визначається її призначенням. компактнихі дешевих цифрових пристроїв. Усі функції микроЭВМ реалізуються з допомогою єдиної мікросхеми. До складу сімейства MCS-51 входить цілий ряд мікросхем від найпростіших мікроконтролерів до досить складних. Мікроконтролери сімейства MCS-51 дозволяють виконувати завдання управління різними пристроями, так і реалізовувати окремі вузли аналогової схеми. Всі мікросхеми цього сімейства працюють з однією і тією ж системою команд MCS-51, більшість з них виконується в однакових корпусах з цоколівкою, що збігається(Нумерація ніжок для корпусу). Це дозволяє використовувати для розробленого пристрою мікросхеми різних фірм – Maxim, Atmel, NXP тощо. (catalog..php?page=components_list&id=39">п.м. Пошук за параметрами) без переробки принципової схемипристрої та програми.

Малюнок 1. Структурна схемаконтролера I8751

Структурна схема контролера представлена ​​малюнку 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, а біти управління споживанням електроенергією відсутні.

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

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

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

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

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

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

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

Блок послідовного інтерфейсу та переривань (ПІП)призначений для організації введення-виведення послідовних потоків інформації та організації системи переривання програм. До складу блоку входять:

  1. - буфер ПІП,
  2. - логіка керування,
  3. - Регістр управління,
  4. - буфер передавача,
  5. - буфер приймача,
  6. - приймач послідовного порту,
  7. - регістр пріоритетів переривань,
  8. - регістр дозволу переривань,
  9. - логіка обробки прапорів переривань та схема вироблення вектора.

Лічильник команд (Program Counter)призначений для формування поточної 16-розрядної адреси внутрішньої пам'яті програм та 8/16-розрядної адреси зовнішньої пам'ятіпрограм. До складу лічильника команд входять 16-розрядні буфер РС, регістр РС та схема інкременту (збільшення вмісту на 1).

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

Порти P0, P1, P2, P3є квазідвунаправленими портами введення-виведення і призначені для забезпечення обміну інформацією ОЕОМ із зовнішніми пристроями, утворюючи 32 лінії введення-виведення.

Влаштування таймерівВ базових моделяхсімейства є два програмованих 16-бітних таймера/лічильника (T/C0 і T/C1), які можуть бути використані як таймери, так і як лічильники зовнішніх подій

Реєстр стану програми (PSW)призначений для зберігання інформації про стан АЛП під час виконання програми.

Пам'ять програм (EPROM)призначена для зберігання програм і є постійним запам'ятовуючим пристроєм (ПЗУ). У різних мікросхемах застосовуються масочні ПЗП, що стираються ультрафіолетовим випромінюванням або FLASHПЗП.

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

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



Базова версія 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 для введення– виведення інформації;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Позначення

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

ROM/EPROM (байт)

лічильники

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

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

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

Таблиця 1.1

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

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

периферія,

особливості

U піт. (В)

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

4 рівня IRQ, clock out

4 рівня IRQ, clock out

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

4 рівня IRQ, clock out

4 рівня IRQ, clock out

4 рівня IRQ, clock out

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

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

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

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

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

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

Черга вказівок;

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

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

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

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

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

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

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

В даний час різними фірмами випускається безліч модифікацій та аналогів цього сімейства, як фірмою 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.

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

ти з акумулятором, використовують мнемоніку "А", наприклад, 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Е, ТМ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В

Опитування стану системи переривань проводиться в кінці кожного машинного циклу у фазі S5P2, за винятком команд RETI та будь-яких команд із зверненням до регістрів IE та IP. Від моменту фіксації запиту на переривання до обслуговування переривання потрібно від 38 до 86 періодів частоти fOSC залежно від фази надходження запиту та числа машинних циклів команди, під час виконання якої надійшов запит.

При реалізації переривання апаратним способом виконується команда LCALL addr16, що забезпечує запам'ятовування у стеку поточного стану програмного лічильника (запам'ятовування адреси повернення), та перехід до стартової адреси addr16 відповідної процедури обслуговування. З кожним джерелом запиту переривань пов'язаний свій

стартова адреса (вектор переривання):

Зовнішнє переривання INT0.

Переривання таймера/лічильника ТС0.

Зовнішнє переривання INT1.

Переривання таймера/лічильника ТС1.

Переривання послідовного порту.

2.7. Методи адресації та система команд сімейства MCS-51

Система команд сімейства MCS-51 орієнтована на організацію гнучкого введення-виведення даних через універсальні порти P0...P3 та первинну обробку інформації. Особливу увагуприділено операціям з бітами та передачі управління за їх значенням. Команди, що виконують такі операції, складають численну групу і утворюють разом з відповідними апаратними засобами так званий «бульовий процесор» у складі архітектури MCS-51.

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

2.7.1. Методи адресації

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

Якщо адреса вказує на номер осередку пам'яті, в якій знаходиться або куди заноситься операнд, його називають прямою адресою.

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

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

Нижче наведено основні методи адресації, що використовуються у системі команд сімейства MCS-51.

Неявна адресація. У команді не міститься явних вказівок про адресу операнда, що бере участь в операції, або адресу, за якою міститься результат операції, але ця адреса мається на увазі. У командах найчастіше неявно адресується акумулятор як приймач результату операції. Наприклад, результат складання вмісту акумулятора (A) і регістру R1 поточного банку даних командою ADD A, R1 записується в акумулятор, що неявно адресується. Вся вказана команда займає в пам'яті один байт, тоді як адреса лише акумулятора (8Eh області SFR) містить один байт.

Безпосередня адресація. У полі адреси команди містить

житься не адреса операнда, а сам операнд. На безпосередню адресацію вказує спеціальний # символ перед числом. Наприклад, командою MOV A,#15h шістнадцяткове число 15 (другий байт команди) завантажується в акумулятор. У системі команд безпосередня адресація позначена як #data, де data – число

(Data = 00h ... FFh).

Пряма адресація. У полі адреси команди вказана пряма адреса осередку пам'яті даних, в якій знаходиться або куди заноситься операнд. Наприклад, командою MOV A,15h вміст осередку DSEG з адресою 15h завантажується в акумулятор. Осередок пам'яті має пряму адресацію, а акумулятор - неявну. Залежно від місцезнаходження адресованого операнда, пряма адресація поділяється на пряму реєстрову та абсолютну.

Пряма реєстрова адресація. У полі адреси команди вказана пряма адреса регістру поточного реєстрового банку. Реєстрів у кожному банку вісім, і їх адресації необхідний трехбитовый прямий адресу. У мнемоніці команд регістр, що адресується, позначений Rn, де n=0...7. Усі поля команди уміщаються в один байт. Таку адресацію називають короткою. Наприклад, MOV R4, R1.

Пряма абсолютна адресаціядозволяє звернутися до будь-якого осередку DSEG і області SFR. Пряма адреса в цьому випадку займає один байт, а команда – два байти. У системі команд байт прямої адреси позначено словом direct (прямий) (direct = 00h ... FFh). Наприклад, команда MOV 80h, R2 (або MOV P0, R2) завантажує вміст регістру R2 поточного банку даних порт Р0 (осередок 80h області SFR). Якщо обидва операнди мають пряму абсолютну адресацію, то команда стає трибайтовою (наприклад, MOV 80h, 15h).

Непряма адресація. У полі адреси вказана адреса комірки пам'яті, в якій знаходиться пряма адреса операнда. У системі команд на непряму адресацію вказує спеціальний символ @. Властивістю

зберігати пряму адресу мають регістри R0 і R1 (@Ri, i = 0,1) кожного регістрового банку. Наприклад, якщо вміст регістру R1 поточного банку регістрів дорівнює 15h, то команда MOV A, @ R1 виконає ту ж дію, що і наведена вище команда MOV A, 15h – завантажить вміст осередку пам'яті DSEG з адресою 15h в акумулятор. Однак команда MOV A, @ R1 однобайтова, але найголовніше, тут є можливість програмним способомзмінювати адресу, змінюючи вміст регістру R1.

Відносна адресація. При відносній адресації пряма адреса формується шляхом додавання базової адреси з адресним полем команди. Як базова адреса використовується вміст програмного лічильника, а адресне поле команди є восьмирозрядним зміщенням rel (relative - відносний). Число rel інтерпретується командою як ціле зі знаком, представлене у додатковому коді. Діапазон його вистави - (-128...+127). При визначенні числа rel слід враховувати, що програмний лічильник свідчить про наступну, підлягає виконанню, команду. Відносна адресація широко використовується в командах передачі управління, що дозволяє створювати програмні модулі, що переміщуються. Команди передачі управління з відносною адресацією дозволяють організувати розгалуження щодо поточного положення програмного лічильника PC в обидві сторони (-128...+127) байт.

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

Базова адресаціяпредставляє різновид відносної адресації. Пряма адреса в цьому випадку формується шляхом додавання адреси, вказаної в команді, з вмістом базового регістру, в якому зберігається базова адреса. Функцію базового регістру сімейства MCS-51 виконує регістр-покажчик даних DPTR або програмний лічильник PC. Цей тип адресації особливо зручний при обробці таблиць та масивів даних. У командах MOVC A,@A+DPTR та MOVC A,@A+PC 16-розрядна пряма адреса формується як сума вмісту регістрів DPTR та A або PC та A.

Сторінка адресація. При використанні сторінки адресації пам'ять розбивається на ряд сторінок однакової довжини. Адресація сторінок здійснюється окремим регістром сторінок, а адресація осередків пам'яті всередині сторінки – адресою, що міститься у команді. Пряма адреса формується конкатенацією (приєднанням) адреси сторінок та адреси осередку пам'яті всередині сторінки. У команді MOVX A, @ Ri функцію регістру сторінок виконує порт P2 (старший байт адреси), а вміст регістру Ri (молодший байт адреси) задає адресу всередині сторінки. У цьому пам'ять розбивається на 256 сторінок по 256 осередків у кожному їх.

Стекова адресаціявикористовується в безадресних командах і є поєднанням автоінкрементного та автодекрементного способів адресації, що працює за принципом LIFO (L ast I nput – F irst O utput)- «останнім увійшов – першим вийшов». Стек знаходиться в DSEG і зростає у бік збільшення адреси. Адреса вершини стека міститься в покажчику стека SP. При записі байта в стек спочатку виконується інкремент вмісту SP, а потім за цією адресою виконується запис. При читанні байта зі стека спочатку виконується читання за адресою, яку вказує SP, та був - декремент SP. При використанні стека необхідно враховувати, що глибина стека (максимальна кількість осередків пам'яті, зайнятих під стек) апаратними засобами не контролюється. При надмірному збільшенні стека можуть бути зайняті не призначені йому осередки пам'яті з втратою інформації у них. Апаратний стек використовується для збереження адреси повернення при обслуговуванні переривання.

2.7.2. Система команд сімейства MCS-51

Система команд представлена ​​таблицях П2.1...П2.6 додатка 2. У таблицях вказано найменування команди, її мнемоника, двійковий кодоперації, вплив команди, що виконується на прапори C, OV, AC і P, довжина команди в байтах (Б) і час виконання в машинних циклах (Ц), а також зміст перетворення, що виконується командою. Як роздільник адресних полів у командах використовується кома. Для покращення читаності можна додати пробіли після коми, якщо їх підтримує асемблер, що використовується.

Все безліч команд можна розбити на 5 груп: операції передачі даних, арифметичні операції, логічні операції, операції з бітами та операції передачі керування.

Група команд операцій передачі даних(таблиця П2.1) зі-

тримає команди MOV (передачі даних між DSEG та RSEG), MOVC (між CSEG та A), MOVX (між XSEG та A), команди звернення до стеку PUSH та POP, а також дві команди обміну XCH та XCHD. Всі команди передачі даних, у яких приймачем є акумулятор, встановлюють прапор паритету вмісту акумулятора P, а команди з прямою адресацією, у яких приймачем є регістр PSW, змінюють всі прапори. Найбільш ємною є команда MOV, яка використовує чотири способи адресації: прямий регістровий (A, Rn, DPTR), прямий (direct), непрямий (@Ri), безпосередній (#data, #data16). Другий операнд команди є джерелом, перший – приймачем. Для вказівки приймача є три способи адресації (крім безпосереднього), а для вказівки джерела всі чотири. Трибайтова команда MOV direct,direct забезпечує пересилання між двома будь-якими осередками пам'яті (DSEG та SFR), включаючи RSEG. Для обміну з RSEG передбачені спеціальні дво- та однобайтові формати:

Спеціальна команда MOV DPTR, # data16 дозволяє завантажити 16-розрядний покажчик DPTR значенням data16.

Команда MOVC дозволяє зчитувати інформацію з програмної пам'яті CSEG не в регістр команд пристрою управління, а в акумулятор операційного пристрою. У команді використовуються два способи адресації: на базі DPTR і щодо PC. В обох випадках ціле без знаку усунення (індекс) зберігається в акумуляторі. Приймачем результату також є акумулятор. Команда дозволяє виконувати швидке перекодування за таблицями.

Звертання до зовнішньої пам'яті здійснюється за допомогою команди MOVX. Обмін здійснюється по байтах між акумулятором та зовнішнім XSEG. Осередок XSEG може бути адресована двома способами: побічно через 16-розрядний покажчик DPTR і побічно через 8-розрядний покажчик Ri, i=0,1. У разі регістром сторінок служить регістр P2.

Безадресні команди PUSH і POP забезпечують передачу даних.

них між DSEG, RSEG і SFR.

Команда обміну XCH забезпечує двосторонній обмін байтами, а команда XCHD – молодшими зошитами байтових операндів.

Група команд арифметичних операцій(таблиця П2.2) зі-

тримає команди додавання ADD, додавання з урахуванням перенесення ADDC, віднімання з урахуванням позики SUBB, збільшення та зменшення на одиницю INC та DEC, десяткової корекції додавання у двійково-десятковому (BCD) коді упакованого формату, множення MUL та поділу DIV. Операції виконуються над беззнаковими цілими числами. В операціях складання та віднімання першим операндом і приймачем результату служить акумулятор. Для визначення другого операнда використовується пряма реєстрова, пряма абсолютна, безпосередня та непряма адресації. Операції INC і DEC застосовні до акумулятора, що прямо адресується регістру, прямо або опосередковано адресується осередку пам'яті. Крім того, операція INC застосовна до вмісту 16-розрядного регістру покажчика DPTR.

В операціях цілісного множення та поділу без знака беруть участь акумулятор та регістр B. При множенні 8-розрядне значення A множиться на 8-розрядне значення B, а 16-розрядний результат записується у пару BA. У цьому регістр B зберігає старшу частину произведения. Прапорець OV встановлюється, якщо добуток більший за 255. При розподілі 8-розрядного значення A на 8-розрядне значення B приватне записується в A, а залишок у B. При спробі розподілу на 0 встановлюється прапор переповнення OV.

Команда десяткового коригування акумулятора DA розміщується після команди додавання. Доданки необхідно подати в BCD коді. Коригування виконується стандартним способом.

Група команд логічних операцій(Таблиця П2.3 ) містить три типові операції: ANL - логічне І, ORL - логічне АБО, XRL - логічне виключне АБО. Джерелом першого операнда

служить або акумулятор A, або осередок пам'яті, що прямо адресується. Другий операнд задається одним із чотирьох основних методів адресації. До складу групи входять також одномісні операціїнад вмістом акумулятора: CLR – очищення, CPL – інверсії, а також RL, RLC, RR та RRC – операції циклічного та розширеного зрушень вправо та вліво. Сюди включена операція обміну зошит в акумуляторі SWAP, яка може інтерпретуватися як циклічний зсув байта на чотири розряди.

Група команд операцій із бітами(таблиця П2.6) містить ко-

манди SETB - установки біта в 1, CLR - скидання біта в 0, CPL - інверсії біта, ANL і ORL - логічне І та логічне АБО вмісту прапора C і прямо адресованого біта, MOV - пересилання біта.

В бітових операціях прапор C виконує роль булевого акумулятора. Як операнди використовується вміст прапора C або прямо адресованого біта bit області BSEG. У операціях ANL та ORL можна використовувати вміст прямо адресованого біта (bit) або інверсію вмісту (/bit).

В цю групу входять також команди умовного переходу з відносним 8-розрядним усуненням rel. Умовний перехід може бути здійснений як при встановленому (команда JB), так і при скинутому (команда JNB) биті. Особливо слід зазначити команду JBC, яка при встановленому битіреалізує розгалуження і водночас скидає біт 0.

Група команд передачі керування(таблиці П2.4 і П2.5)

тримає команди безумовного переходу AJMP, LJMP, SJMP, JMP, умовного переходу JZ, JNZ, CJNE, виклику ACALL, LCALL, повернення RET, RETI та модифікації з умовним переходом DJNZ. Сюди включено порожня команда NOP.

В командах передачі управління широко застосовується відносна адресація, що дозволяє створювати переміщувані програмні модулі. Як відносна адреса виступає 8-розрядне зміщення rel - байт зі знаком, що забезпечує перехід на (-128 ... +127) байт щодо поточного положення PC. Для переходу в будь-яку іншу точку 64 Кбайтового адресного простору може бути використаний або пряма addr16, або непряма @A+DPTR адреса. У разі вміст A інтерпретується як ціле без знака. Варіант короткої прямої адресації addr11 всередині 2 Кбайт поточної сторінки введений для сумісності з сімейством MCS-48.

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

Коли мікроконтролер розпізнає запит на переривання, він генерує команду LCALL addr16, що автоматично забезпечує запам'ятовування адреси повернення в стеку. Інформація про стан програми (вміст регістру PSW) автоматично не зберігається. При цьому

THE BELL

Є ті, хто прочитав цю новину раніше за вас.
Підпишіться, щоб отримувати статті свіжими.
Email
Ім'я
Прізвище
Як ви хочете читати The Bell
Без спаму