7. Структура мікроконтролерів сімейства mcs-51
В дійсний час найбільш розповсюдженим серед усіх 8-розрядних мікроконтролерів (МК) є сімейство MCS-51 з CISC-архітектурою фірми Intel. Воно одержало свою назву від першого представника цього сімейства - МК і8051. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої або внутрішньої пам'яті програм і невисока вартість забезпечили цьому МК успіх на ринку. У результаті на сьогоднішній день існує більш 200 модифікацій МК сімейства і8051, що випускаються майже 20-ю компаніями.
Усі МК сімейства MCS-51 мають загальну систему команд. Наявність додаткового устаткування впливає тільки на кількість регістрів спеціального призначення. Вітчизняний аналог МК і8051 – К1816ВЕ51.
Базова модель сімейства MCS-51 МК і8051 містить :
- вбудований тактовий генератор;
- внутрішню (резидентну) пам'ять програм ПЗП об’ємом 4 КБайт;
- внутрішню (резидентну) пам'ять даних ОЗП об’ємом 128 байт;
- можливість адресації 64 КБайт пам'яті програм та 64 КБайт пам'яті даних;
- 32 двонапрямлені та індивідуально адресовані лінії введення-виведення (порти Р0-Р3);
- послідовний порт введення/виведення;
- два 16-розрядні багатофункціональні таймери-лічильники;
- дві лінії запитів на переривання від зовнішніх пристроїв.
Структурна схема МК і8051 наведена на рис. 4. Розглянемо склад схеми та призначення її елементів.
Мікроконтролер містить 8-розрядний центральний процесор ЦП, резидентну пам'ять програм (ПЗП) об’ємом 4 КБайт, резидентну пам'ять даних (ОЗП) об’ємом 128 байт, чотири 8-розрядних програмованих порти введення-виведення Р0-Р3, блок керування БК і блок переривань, таймерів та послідовного порту.
Центральний процесор ЦП містить 8-розрядний арифметико-логічний пристрій АЛП зі схемою десяткової корекції СДК, два акумулятори А і В, регістр слова стану процесора PSW (Processor State Word) та програмно-недоступні буферні регістри T1 і T2, які виконують функції розподілу вхідних та вихідних даних АЛП. Центральний процесор виконує операції додавання, віднімання, множення, ділення, логічні операції І, АБО, ВИКЛЮЧАЛЬНЕ АБО, операції зсуву, інверсії та скидання. Він оперує з такими типами змінних: булевими (1 біт), цифровими (4 біт), байтовими (8 біт) та адресними (16 біт). Особливістю МК є великий набір операцій з бітами: окремі біти даних можуть бути встановлені, скинуті, інвертовані, перевірені, передані.
Акумулятор А є джерелом одного з операндів і місцем розміщення результату виконання багатьох команд. Акумулятор В використовується як акумулятор лише у командах множення і ділення, а в інших випадках - як регістр загального призначення.
Регістр слова стану процесора PSW зберігає інформацію про стан АЛП у процесі виконання програми і має формат, наведений у табл. 2. Прапорець перенесення (позики) С встановлюється у разі виходу результату додавання (віднімання) беззнакових операндів за межу діапазону. Прапорець додаткового перенесення (позики) АС встановлюється у разі перенесення з молодшої тетради у старшу (з розряду D3 у розряд D4). Прапорець OV встановлюється у командах додавання і віднімання, якщо результат перевищує ємність 7 біт і старший біт не може бути інтерпретований як знаковий у командах ділення відбувається скидання OV, а під час ділення на нуль він знову встановлюється. У командах множення OV набуває значення логічної одиниці, якщо результат перевищує 0FFH. Прапорець Р є доповненням вмісту акумулятора А до парності, тобто 9-розрядне слово, що складається з 8 біт акумулятора А та біта Р, має завжди парну кількість одиниць.
Блок керування БК складається з генератора тактових імпульсів Г, схеми керування і синхронізації СКС та програмно-недоступного регістра команд (РК). Код команди, зчитаної з резидентної пам’яті програм, запам’ятовується у 8-розрядному РК і надходить на дешифратор команд, який входить до складу СКС. На підставі декодованого коду команди, зовнішніх керуючих сигналів та сигналів синхронізації блок керування БК виробляє внутрішні сигнали керування блоками МК.

Рис. 4. Структурна схема мікроконтролера і8051
Постійний запам'ятовувальний пристрій ПЗП, або резидентна пам'ять програм (РПП) МК i8051 має інформаційну ємність 4 Кбайт і виконана у вигляді ПЗП програмною маскою. ПЗП має 16-розрядну адресну шину, що дає змогу розширити пам'ять до 64 Кбайт через під'єднання зовнішніх ВІС. Адреса визначається вмістом лічильника команд PC {Program Counter) або вмістом регістра-покажчика даних DPTR (Data Pointer Register). Регістр DPTR використовується за непрямих переходів у програмі або під час адресації таблиць, або як один 16-розрядний регістр, або як два незалежних 8-розрядних регістри DPH і DPL.
|
|
Формат слова стану PSW Таблиця 2 | ||
|
Біт |
Позначення |
Призначення |
Доступ до біта |
|
7 |
С |
Прапорець перенесення |
А або П |
|
6 |
АС |
Прапорець додаткового перенесення |
А або П |
|
5 |
F0 |
Прапорець користувача |
П |
|
4 |
RS1 |
Покажчик банку робочих регістрів: 00 – банк 0; 10 – банк 1; 01 – банк 2; 11 – банк 3 |
П |
|
3 |
RS0 | ||
|
2 |
OV |
Прапорець переповнення |
П |
|
1 |
– |
Резервний прапорець |
П |
|
0 |
P |
Біт парності |
А або П |
|
Примітка: У таблиці використано такі позначення: А – біт встановлюється апаратно; П - біт встановлюється програмно. | |||
Розподіл адресного простору ПЗП показано на рис. 5. Молодші адреси ПЗП відводяться для оброблення переривань і початку роботи МК після скидання.
Оперативний запам'ятовувальний пристрій ОЗП, або резидентна пам'ять даних (РПД) складається з двох областей (рис. 6). Перша область - ОЗП даних з інформаційною ємністю 128 х 8 біт з адресами 0 — 7FH, друга область - регістри спеціальних функцій (SFR — Special Function Registers) з адресами 80Н — FFH.
Резидентна пам'ять даних адресується 8-розрядними регістром адреси (РА) або покажчиком стеку (SP) (див. рис. 4). Регістр адреси є програмно-недоступним регістром, у який завантажується адреса комірки ОЗП під час виконання команд. Регістр SP призначений для адресації стеку, який є частиною РПД. Вміст SP інкрементується перед запам'ятовуванням даних у стеку за командами PUSH і CALL та декрементується за командами POP і RET. У процесі ініціалізації МК після надходження сигналу скидання (RESET) у SP автоматично завантажується код 07Н. Отже, якщо програма не перевизначає стек, то перший байт даних у стеку розміщується у комірці РПД за адресою 08Н.
Резидентна пам'ять даних, так само як і РПП, може бути розширена до 64 Кбайт за допомогою зовнішніх ВІС.

Рис. 5. Розподіл адресного простору РПП
Блок переривань, таймерів та послідовного порту (рис. 4) містить два таймери-лічильники Т/С0 та Т/С1, регістр режимів таймерів-лічильників TMOD (Timer/Counter Mode Control Register), регістр керування таймерами-лічильниками TCON (Timer/Counter Control Register), буфер послідовного порту SBUF (Serial Data Buffer), регістр керування послідовним портом SCON (Serial Port Control Register), регістр дозволу переривань IE (Interrupt Enable Register), регістр пріоритетів переривань IP (Interrupt Priority Control Register) та регістр керування енергоспоживанням PCON (Power Control Register).
Таймери-лічильники містять два 16-розрядних регістра Т/С0 та Т/С1. Кожний з цих регістрів складається з двох 8-розрядних регістрів – ТН0, ТL0 і ТН1, ТL1 відповідно.
Всі регістри блоку переривань, таймерів та послідовного порту, а також регістри DPTR, SP, PSW, акумулятори А і В, регістри портів P0 – P3 відносяться до регістрів спеціальних функцій SFR (Special Function Registers), які розташовані у РПД за адресами 80Н-FFH (рис. 6). Перелік регістрів спеціальних функцій наведений у таблиці 3.
|
00H |
БАНК 0 |
|
|
|
|
Прямо адресовані біти | |||||||
|
07H |
|
|
|
D7 |
|
|
|
|
|
|
D1 | ||
|
08H |
БАНК 1 |
|
|
20H |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 | |
|
0FH |
|
|
21H |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 | ||
|
10H |
БАНК 2 |
|
|
22H |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 | |
|
17H |
Внутрішній ОЗП |
23H |
1F |
1E |
1D |
1C |
1B |
1A |
19 |
18 | |||
|
18H |
БАНК 3 |
24H |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 | |||
|
1FH |
25H |
2F |
2E |
2D |
2C |
2B |
2A |
29 |
28 | ||||
|
20H |
Прямо адресовані біти |
26H |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 | |||
|
|
|
27H |
3F |
3E |
3D |
3C |
3B |
3A |
39 |
38 | |||
|
2FH |
|
|
|
28H |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 | |
|
|
|
|
|
29H |
4F |
4E |
4D |
4C |
4B |
4A |
49 |
48 | |
|
|
|
|
2AH |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 | ||
|
7FH |
|
|
2BH |
5F |
5E |
5D |
5C |
5B |
5A |
59 |
58 | ||
|
80H |
Регістри спеціальних функцій |
|
|
2CH |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 | |
|
|
|
|
2DH |
6F |
6E |
6D |
6C |
6B |
6A |
69 |
68 | ||
|
FFH |
|
|
2EH |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 | ||
|
|
|
|
|
2FH |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 | |
|
Рис. 6. Резидентна пам’ять даних | |||||||||||||
|
Регістри спеціальних функцій Таблиця 3 | ||
|
Адреса |
Позначення |
Найменування |
|
0E0H |
АСС* |
Акумулятор А |
|
0F0H |
В |
Акумулятор В |
|
0D0H |
PSW* |
Слово стану процесора |
|
080Н |
P0* |
Порт 0 |
|
090H |
Р1* |
Порт 1 |
|
0A0H |
P2* |
Порт 2 |
|
0B0H |
P3* |
Порт 3 |
|
081H |
SP |
Регістр покажчик стеку |
|
083H |
DPH |
Старший байт регістра-покажчика даних DPTR |
|
082H |
DPL |
Молодший байт регістра-покажчика даних DPTR |
|
08CH |
TH0 |
Старший байт таймера 0 |
|
08AH |
TL0 |
Молодший байт таймера 0 |
|
08DH |
TH1 |
Старший байт таймера 1 |
|
08BH |
TL1 |
Молодший байт таймера 1 |
|
089H |
TMOD |
Регістр режимів таймерів-лічильників |
|
088H |
TCON* |
Регістр керування-статусу таймерів |
|
Продовж. табл. 3 | ||
|
0B8H |
IP* |
Регістр пріоритетів переривань |
|
0A8H |
IE* |
Регістр дозволу переривань |
|
087H |
PCON |
Регістр керування енергоспоживанням |
|
098H |
SCON* |
Регістр керування послідовним портом |
|
099H |
SBUF |
Буфер послідовного порту |
|
Примітка. Позначені регістри допускають адресацію окремих бітів. | ||

