Програмування цифрового автомату
Міністерство освіти і науки, молоді та спорту України
Національний авіаційний університет
Інститут інформаційно-
Кафедра інформаційно-вимірювальних систем
Курсова робота
з дисципліни: «Мікроконтролери у вимірювальній техніці»
Варіант № 12
Виконала:
студентка групи 512 ІС
Самчук Тетяна Олександрівна
Роботу здано “___”________ 2012 р.
Курсову роботу захищено з оцінкою: ____________________
Київ – 2012
Національний авіаційний університет
Інститут інформаційно-
Кафедра інформаційно-вимірювальних систем
ЗАВДАННЯ
студентки Самчук Тетяни Олександрівни
Варіант № 12
На базі мікроконтролера MCS-51 та стенду EV8031 розробити цифровий автомат із використанням 8-бітного ЦАП. Цифровий автомат має виконувати таку послідовність дій:
1) після запуску програми протягом 12 секунд із виходу ЦАП поступає пилкоподібний сигнал;
2) протягом 9 секунд із виходу ЦАП поступає послідовність прямокутних імпульсів;
3) якщо протягом перших 12 секунд роботи програми (п.1) була натиснута кнопка INT0 з виходу ЦАП протягом 6 секунд поступає синусоїда. У протилежному випадку ЦАП вимикається на 7 секунд, після чого процес повторюється, починаючи з п.1.
Період кожного із сигналів має складатися із 15 точок.
Програма повинна мати наступні функції:
1) встановлення частоти поточного вихідного сигналу за допомогою кнопки INT0;
2) протягом виведення на ЦАП амплітуда вихідного сигналу має плавно змінюватися від мінімуму до максимуму та навпаки;
3) кількість секунд, що залишилися до кінця, та номер циклу виводиться на статичний індикатор у десятковому форматі.
Зміст
Вступ…………………………………………………………………
- Теоретична частина:
- Загальні відомості про цифро-аналоговий перетворювач……...…5
- Мікроконтролер 8051…………………………………………….…..8
- Програмна архітектура МК 8051……………………………..…..8
- Структура внутрішньої пам’яті…………………………….....…10
- Система переривань…………………………………….…….….
15 - Цифровий автомат…………………………………………….……..
21 - Що являє собою цифровий автомат……………………….....….21
- Структурна схема цифрового автомату…………………..…......23
- Синтез цифрового автомату……………………………..…..…..25
- Практична частина:
- Алгоритм програми для реалізації цифрового автомата………….26
- Алгоритм для підпрограми обробки переривань…………………..28
- Текст програми з коментарями…………………………………......
29
Висновки…………………………………………………………
Вступ
Дана курсова робота виконується з метою більш поглибленого вивчення дисципліни «Мікроконтролери у вимірювальній техніці», набуття навичок самостійного вирішення поставлених задач, більш детального вивчення принципу роботи MCS-51 стенду EV8031, та вдосконалення знань, набутих під час виконання лабораторних робіт.
Для успішного виконання курсової роботи студент повинен вміти працювати з літературою, знати необхідний матеріал, вміти складати алгоритми та розроблювати програми мовою СІ. В курсовій роботі використовуються такі теоретичні відомості, як відомості про вбудований у стенд ЦАП, а також принцип роботи цифрового автомату, необхідні для кращого розуміння поставленої задачі та розроблення шляхів її реалізації на базі MCS-51 стенду EV8031; відомості про апаратні та програмні можливості використовуваного стенду EV8031 та мікроконтролера MCS-51.
В курсовій роботі використовується
програмне середовище Keil uVision3.
1. Теоретична частина
- ЗАГАЛЬНІ ВІДОМОСТІ ПРО ЦИФРО-АНАЛОГОВИЙ ПЕРЕТВОРЮВАЧ
Цифро-аналогові перетворювачі (ЦАП) виробляють струм чи напругу, функціонально зв'язану з керуючому кодом. ЦАП застосовуються для формування вихідних аналогових сигналів цифрових вимірювальних і обчислювальних пристроїв. Для перетворення двійкового коду в аналоговий сигнал зазвичай формуються струми, що пропорційні вагам розрядів коду після чого додаються ті зі струмів, що відповідають ненульовим розрядам вхідного коду.
Застосовуються в основному два методи ЦАП: підсумовування одиничних еталонних величин і підсумовування еталонних величин, ваги яких розрізняються. У першому методі при формуванні вихідної аналогової величини використовується тільки одна еталонна величина вагою в один квант. В другому методі застосовуються еталонні величини з вагами, що залежать від номера розряду, і в підсумовуванні беруть участь тільки ті еталонні величини, для яких у відповідному розряді вхідного коду встановлена одиниця.
У випадку використання на вході двійкового позиційного коду значення всіх розрядів надходить одночасно, і робота таких ЦАП описується виразом:
де X - аналогова величина.
- коефіцієнти відповідних двійкових розрядів, що приймають дискретні значення одиниці чи нуля.
Р - опорний сигнал
b - число розрядів
У перетворювачах з опорної напруги формуються еталонні величини, які відповідають значенням розрядів вхідного коду, які підсумовуються і утворюють дискретні значення вихідної аналогової величини.
Класифікація ЦАП може бути приведена по ознакам:
- способу формування вихідної напруги (з підсумовування або розподілом напруг);
- роду вихідного сигналу (з токовим виходом або виходом по напрузі);
- полярності вихідної напруги (постійна або змінна).
Основні структури, які використовуються в ЦАП інтегрального виконання це:
- Структури з підсумовуванням струмів.
- ЦАП - зі зваженими резисторами в ланцюгах емітерів.
- ЦАП - зі зваженими резисторами в ланцюгах навантаження.
- ЦАП зі сходовою матрицею R-2R у ланцюгах емітерів транзисторів джерел струмів.
- ЦАП з вихідною сходовою матрицею R-2R
Параметри ЦАП:
Число розрядів n керуючого коду, номінальний вихідний струм, час установлення вихідного сигналу після зміни вхідного керуючого коду, похибка повної шкали, похибка лінійності, диференціальна нелінійність.
Похибки ЦАП можуть бути виражені у відсотках чи інших відносних одиницях, а також у частках кванта.
Спрощена схема ЦАП для розуміння роботи перетворення вхідного коду в струм (напругу) визначеної величини зображений на рис. 1
Рис. 1. Схематичне представлення ЦАП на основі матриці R-2R
Якщо співвідношення резисторів ЦАП встановити рівним 8R, 4R, 2R, 1R, то при включенні всіх комутаторів у відповідності до закону Ома напруга в точці OUT буде дорівнювати напрузі VCC. Якщо ввімкнути комутатор резистора R8, напруга в точці OUT буде рівною VCC/2.
Аналогічно можна отримати значення напруги, при різних комбінаціях вхідного коду.
В складі учбово-відлагоджувального стенда є мікросхема ЦАП КР572ПА1. Вона ввімкнена в режимі роботи 10 розрядного ЦАП з виходом по напрузі (напруга повної шкали вказується на платі розширення). Для спостереження вихідного сигналу з мікросхеми ЦАП необхідно під’єднати осцилограф до BNC роз’єму і замкнути перемичку J4. Цифровий код подається через лінії РА0-РА7 і РС0-РС7 мікросхеми паралельного ПП. Звернення до ЦАП відбувається як до байту зовнішньої пам’яті із адресою 0x8000 (0x8002 для двох старших бітів). Цап є однополярним, тобто не може відтворювати від’ємні значення напруги.
1.2 МІКРОКОНТРОЛЕР 8051
1.2.1 ПРОГРАМНА АРХІТЕКТУРА МІКРОКОНТРОЛЕРІВ 8051
Апаратна архітектура 8051
У мікроконтролера 8051 всі
обчислення виконуються в арифметико-
Рис. 2. Апаратна архітектура 8051
Мікроконтролера 8051 розраховані на робот системами реального часу, які можуть генерувати певні сигнали, що вимагають негайної реакції мікроконтролера. Для обробки таких сигналів (або подій) служить апаратно реалізована логіка переривань, що дозволяє обробляти сигнали зовнішніх джерел, таймерів і послідовного порту.
Швидкість виконання операцій в системі на базі 8051 залежить від тактової частоти, з якою працює кристал і яка може варіюватися від одиниць до декількох десятків мегагерц. В архітектуру класичного мікроконтролера 8051 були внесені деякі зміни (до двох існуючих таймерам доданий третій, а також розширена внутрішня пам'ять),які привели до створення пристрою 8052, найбільш популярного в даний час.
Мікроконтролера 8051 реалізований у вигляді однокристального пристрою з зовнішніми виводами, позначеними, як показано на рис. 3.
Рис. 3. Схема розміщення виводів МК 8051
Вхідні і вихідні сигнали мікроконтролера 8051 мають наступні призначення:
• XTAL і XTAL2 -входи підключення кварцового резонатора для роботи генератора тактової частоти мікроконтролера;
• PSEN - сигнал, що використовується при зверненні до зовнішньої пам'яті програм;
• ALE - вихідний сигнал дозволу фіксації адреси при зверненні до зовнішньої пам'яті програм / даних;
• EA - сигнал, що блокує роботу із внутрішньою пам'яттю;
• RST - сигнал загального скидання;
• P0 - P3 - висновки портів введення / виводу мікроконтролера;
• Vss і Vcc - висновки подачі напруги харчування.
Порти P0, P2 і P3 крім функціонування в режимі вводу/виводу дискретних сигналів можуть виконувати, залежно від конфігурації, і інші функції. Так, через порт P0 при зверненнях до зовнішньої пам'яті виставляються молодші 8 біт 16-розрядної адреси, а потім, у фазі запису/читання даних, через цей порт йде обмін даними. Порт P2 при зверненнях до зовнішньої пам'яті служить джерелом старших 8 біт 16-розрядної адреси.
Висновки порту P3 мікроконтролера 8051 мають такі альтернативні призначення:
• P3.0 - вхід прийому даних у послідовний порт;
• P3.1 - вихід передачі даних з послідовного порту;
• P3.2 - вхід зовнішнього переривання INT0;
• P3.3 - вхід зовнішнього переривання INT1;
• P3.4 - вхід управління таймером 0;
• P3.5 - вхід управління таймером 1;
• P3.6 - вихід сигналу запису в пам'ять;
• P3.7 - вихід сигналу читання з пам'яті.
Для використання альтернативних функцій порту P3 необхідно налаштувати відповідним чином програмне забезпечення системи 8051.
1.2.2 Структура внутрішньої пам’яті 8051
Мікроконтролера 8051 оперують двома типами пам'яті: пам'яттю програм і пам'яттю даних. Пам'ять даних може бути реалізована як комбінація розміщеного на кристалі (резидентного або on $ chip) статичного ОЗУ і зовнішніх мікросхем пам'яті. Для простих апаратно-програмних конфігурацій із застосуванням 8051 буває досить резидентної пам'яті самого мікроконтролера.
Програмний код розміщується в пам'яті програм, яка фізично може бути реалізована у вигляді одноразово програмованого пристрою (EPROM), перепрограмованого пристрою (EEPROM) або флеш $ пам'яті. Якщо для запису програм використовується EPROM або EEPROM, то програмний код зазвичай розташовується в зовнішньому по відношенню до мікроконтролера пристрої. У переважній більшості сучасних мікроконтролерів 8051 пам'ять програм розташовується у флеш пам'яті, що знаходиться, так само як і резидентна пам'ять даних, на одному кристалі.
Пам'ять програм і
пам'ять даних фізично і
Пам'ять програм може мати максимальний об'єм, рівний 64 Кб, що зумовлено використанням 16-розрядної шини адреси. У багатьох випадках ємність пам'яті програм, розміщеної на кристалі 8051, обмежена 4, 8 або 16 Кб. У пам'ять програм крім команд можуть записуватися константи, керуючі слова ініціалізації, таблиці перекодування вхідних та вихідних змінних і т.п. Доступ до вмісту пам'яті програм здійснюється за допомогою 16-бітової шини адреси. Сам адреса формується за допомогою якого програмного лічильника (PC), або регістра $ покажчика даних (DPTR). DPTR виконує функції базового регістра при непрямих переходах за програмою або використовується в операціях з таблицями.
Загальна структура пам'яті мікроконтролера 8051 показана на рис. 4.
Рис. 4. Загальна структура пам'яті мікроконтролера 8051
Розглянемо більш докладно резидентну (on-chip) пам'ять мікроконтролера 8051.Резидентні пам'ять складається з двох частин: внутрішнього ОЗУ розміром 128 байт і пам'яті, що виділяється для регістрів спеціальних функцій (Special Function Registers, SFR). Внутрішнє ОЗУ має структуру,показану на рис. 5.
Рис. 5. Структура внутрішньої ОЗУ
Для доступу до даних, розміщених у внутрішньому ОЗП, використовується однобайтова адреса. Архітектура внутрішньої пам'яті даних 8051 дозволяє звертатися до окремих бітам даних у спеціально виділеної області внутрішнього ОЗУ,починаючи з адреси 0x20 і закінчуючи 0x2F. Таким чином, у зазначеному діапазоні адрес можна звертатися до 128-бітовим змінним за допомогою команд бітових операцій SETB і CLR. Бітові змінні нумеруються, починаючи з 0x0 і закінчуючи0x7F. Це не означає, що не можна звертатися до цих осередків пам'яті, як до байтів при звичайних операціях з пам'яттю.
У другому випадку звернення виконується до байту за адресою 0x20, а встановлення відповідних бітів виконується операцією «логічне АБО».
У внутрішньому ОЗП мікроконтролера 8051 виділено 4 банки регістрів загального призначення. При включенні мікроконтролера банком за замовчуванням стає банк 0 (див. рис. 5).
При цьому регістру R0 відповідає адреса 0x00, регістру R1 - адреса 0x01, нарешті,регістру R7 при використанні банку 0 відповідає адреса 0x07. Якщо банком за замовчуванням стає, наприклад, банк 1, то регістру R0 буде відповідати адресу0x08, регістру R1 - адреса 0x09 і регістру R7 - адреса 0x0F.
До адресного простору внутрішнього ОЗУ починаючи з адреси 0x80 приєднуються і адреси регістрів спеціальних функцій (рис. 6).
Регістри спеціальних функцій (Special Function Registers, SFR) призначені для управління ходом обчислювальних операцій, а також відповідають за ініціалізацію, настройку і управління портами вводу / виводу, таймерами, послідовним портом. Крім того, регістри спеціальних функцій містять інформацію про пріоритети переривань, а також біти управління дозволом переривань. Регістри спеціальних функцій із зазначенням їх призначення перераховані в табл. 1
Рис. 6. регістри спеціальних функцій
Таблиця 1. Регістри спеціальних функцій
Позначення |
Опис |
Адреса |
А |
Акумулятор |
0Е0Н |
В |
Регістр-розширювач акумулятора |
0F0H |
PSW |
Слово стану програми |
0D0H |
SP |
Регістр-покажчик стека |
81H |
DPTR |
Регістр-покажчик даних (DPH) |
83H |
(DPL) |
82H | |
P0 |
Порт 0 |
80H |
P1 |
Порт 1 |
90H |
P2 |
Порт 2 |
0A0H |
P3 |
Порт 3 |
0B0H |
IP |
Регістр пріоритетів переривань |
0B8H |
IE |
Регістр маски переривань |
0A8H |
TMOD |
Регістр режиму таймера/лічильника |
89H |
TCON |
Регістр управління/статусу таймера |
88H |
TH0 |
Таймер 0 (старший байт) |
8CH |
TL0 |
Таймер 0 (молодший байт) |
8AH |
TH1 |
Таймер 1 (старший байт) |
8DH |
TL1 |
Таймер 1 (молодший байт) |
8BH |
SCON |
Регістр управління прийомопередатчиком |
98H |
SBUF |
Буфер прийомопередатчика |
99H |
PCON |
Регістр управління потужністю |
87H |
Деякі регістри спеціальних функцій допускають побітову адресацію. При цьому звернення до окремих бітам такого регістра можливо як за допомогою звичайних функцій для роботи з байтами, так і за допомогою команд побітових операцій.
1.2.3 Система переривань
Робота мікроконтролера 8051 в системах реального часу була б неможлива без обробки подій, що генеруються зовнішніми пристроями, і установки тимчасових залежностей між подіями в системі. Саме цим цілям і служить логіка обробки переривань 8051, функціональна схема якої показана на рис. 7.
Класичний мікроконтролер 8051 має 5 джерел переривань: два зовнішніх переривання, ініційованих сигналами на входах, - INT0 (висновок P3.2) і INT1(висновок P3.3); два переривання таймерів - 0 і 1; переривання послідовного порту(див. рис. 7). Послідовність виконання двох і більше переривань у випадку їх одночасного надходження визначається їх пріоритетами.
Рис. 7. Структура переривань 8051
Якщо припустити, що всі переривання мають однакові установки пріоритету, то за одночасного виникнення декількох переривань вони обробляються так, як показано на рис. 2. Наприклад, переривання INT0 має найвищий пріоритет (йому відповідає умовне позначення 1 на рис. 2), переривання таймера 0 має нижчий пріоритет у порівнянні з INT0 (позначено цифрою 2) і т.д. Найнижчий пріоритет у пристрої 8051 має переривання послідовного порту (позначено цифрою 5 на малюнку). Для мікроконтролера 8052 найнижчим пріоритетом має переривання таймера 2 (позначено цифрою 6). Для зміни пріоритетів виконання переривань слід встановлювати спеціальні флаги в регістрі пріоритетів IP.
Мікроконтролер реагує на переривання, тільки якщо буде встановлено флаг відповідного переривання в регістрі TCON.
Будь-яке з переривань буде викликано тільки в тому випадку, якщо його виклик вирішено шляхом установки відповідних бітів у регістрі IE.
Розглянемо, як викликаються і обробляються зовнішні переривання INT0 і INT1 в мікроконтролері 8051. Зовнішні переривання INT0 і INT1 можуть бути викликані рівнем або переходом сигналу з 1 в 0 на входах мікроконтролера в залежності від значень керуючих бітів IT0 і IT1 в регістрі TCON. Якщо відповідний біт ITx (x = 0,1)встановлено, то переривання викликається по перепаду 1-0 на відповідному вході INTx мікроконтролера. Якщо ці біти скинуті, то переривання INTx викликається при наявності низького рівня на відповідному вході.
При виникненні зовнішнього переривання
INTx встановлюється відповідний флаг
IEx в регістрі TCON, який ініціює виклик
відповідної підпрограми
Зовнішні переривання INT0 і INT1 можуть (якщо дозволені) викликатися одним з трьох способів:
- установкою низького рівня сигналу на відповідному виводі мікроконтролера;
- програмною установкою бітів P3.2 та / або P3.3;
- установкою флагу переривання IE0 або IE1.
Переривання від таймерів викликаються при переповненні регістрів таймера (TH0 - TL0 для таймера 0, TH1 - TL1 для таймера 1 і TH2 - TL2 для таймера 2). Для всіх трьох таймерів при досягненні значень 0xFF в THx - TLx (x = 1, 2, 3) наступний інкремент таймера викличе установку флага TFx, що ініціює переривання. Флаги переривання таймерів 0 і 1 розміщені в регістрі TCON, при цьому TF0 відповідає біту TCON.5, а TF1 - биту TCON.7.
Флаги запитів переривання від таймерів TF0 і TF1 скидаються автоматично при передачі управління підпрограмі обслуговування.
Переривання послідовного порту викликається установкою одного з флагів - TI або RI (див. рис. 2). Флаги запитів переривання RI і TI встановлюються логікою послідовного порту апаратно, але скидатися повинні програмою. Переривання можуть бути викликані або скасовані програмою, тому що всі перераховані флаги програмно доступні. Обмін даними через послідовний порт буде розглянуто далі в цій книзі, тому зупинятися більш докладно на особливостях обробки переривань послідовного порту ми поки не будемо.
Всі операції з обробки переривань виконує логіка переривань мікроконтролера. Флаги переривань опитуються в кожному машинному циклі, при цьому аналіз пріоритетів переривань виконується протягом наступного машинного циклу. Логіка переривань апаратно сформує дальній виклик LCALL відповідної програми $ обробника переривання, якщо тільки цей виклик не блокується з однієї з таких причин:
• в даний момент обслуговується запит переривання з пріоритетом рівним або більш високим, ніж поточний;
• поточний машинний цикл не є останнім у циклі виконуваної команди;
• в даний момент виконується команда RETI або будь-яка команда, яка звертається до одного з регістрів - IE або IP.
Якщо флаг переривання був встановлений, але по кожній з перерахованих причин переривання не було обслуговано, а флаг до моменту закінчення блокування був скинутий, то запит переривання втрачається.
Паралельні порти вводу / виводу даних мікроконтролера 8051 має чотири 8-бітових порту введення / виводу, позначених P0- P3 і призначених для введення або виведення інформації як у формі байта, так і побитово.
Кожен порт містить керований регістр-
Рис. 8. Узагальнена функціональна
Порт P0 є двонаправленим, а порти P1 - P3 - квазідвунаправленими, при цьому кожна лінія портів може бути використана незалежно від інших для введення або виведення. По сигналу скидання в регістри-засувки всіх портів автоматично записуються одиниці, що переводить вихідні лінії портів в режим введення. Всі порти можуть бути використані для організації введення / виводу інформації з двонаправленим лініях передачі.
Однак порти P0 і P2 не можуть бути використані для цієї мети у випадку, якщо система має зовнішню пам'ять, зв'язок з якою організовується через загальну поділювану шину адреси / даних, що працює в режимі тимчасового мультиплексування. Схема функціонування однієї лінії введення / виводу порту P0 показана на рис. 4.
Рис. 9. Схема функціонування однієї лінії введення / виводу порту P0
Вихідні драйвери порту
P0 реалізовані з відкритим
Рис. 10. Використання ліній Р0 для вводу/виводу
Для читання порту P0 потрібно спочатку записати в нього одиниці, а потім прочитати вхідне значення. Апаратна архітектура портів P1 - P3 дещо відрізняється від тієї, що реалізована для P0. Функціональна схема однієї лінії введення / виводу портів P1 - P3 показана на рис.11.
Рис. 11. Функціональна схема однієї лінії введення / виводу портів P1 - P3
Вихідні каскади портів P1 - P3 використовують внутрішні підтягують резистори, з'єднані зі стоком вихідних транзисторів, тому необхідність у зовнішніх резисторах, як у випадку порту P0, відпадає. Вихідні драйвери портів 0 і 2, а також вхідний буфер порту 0 використовуються при зверненні до зовнішньої пам'яті. При цьому через порт 0 в режимі тимчасового мультиплексування спочатку виводиться молодший байт адреси, а потім видається або приймається байт даних. Через порт 2 виводиться старший байт адреси в тих випадках, коли розрядність адреси дорівнює 16 біт.
Порти P1, P2 і P3 можуть використовуватися, так само як і порт P0, для введення/виведення даних, при цьому не потрібно встановлювати підтягують резистори, як це робиться для порту P0. Як і для порту P0, при читанні даних слід записати у відповідні розряди портів P1, P2 і P3 одиниці.
Усі висновки порту P3 можуть бути використані для реалізації альтернативних функцій. Ці функції можуть бути задіяні шляхом запису одиниці у відповідні біти регістра-засувки (P3.0 - P3.7) порту P3.
Звернення до портів введення
/ виведення можливо з
• ANL - «логічне І», наприклад: ANL P1, А;
• ORL - «логічне АБО», наприклад: ORL P2, А;
• XRL - «виключає АБО», наприклад: XRL Р3, А;
• JBC - перехід з подальшим очищенням біта, наприклад: JBC P1.1, LABEL;
• CPL - інверсія бита, наприклад: CPL Р3.3;
• INC - інкремент порту, наприклад: INC P2;
• DEC - декремент порту, наприклад: DEC P2;
• DJNZ - декремент порту і перехід, наприклад: DJNZ P1, LABEL;
• MOV PX.Y, C - передача біта перенесення C в біт Y порту X;
• SET PX.Y - установка біта Y порту X;
• CLR PX.Y - скидання біта Y порту X.
При роботі з портами введення/виводу мікроконтролера 8051 необхідно враховувати, що вихідні драйвери цих портів можуть забезпечити максимальний струм в навантаженні порядку декількох міліампер, тому при підключенні потужнострумових вихідних навантажень слід використовувати буферні схеми.
1.3 ЦИФРОВИЙ АВТОМАТ
1.3.1 ЩО ЯВЛЯЄ СОБОЮ ЦИФРОВИЙ АВТОМАТ
Цифровий автомат представляє собою обчислювальний пристрій або вузол, що містить елементи пам'яті і виконує дискретні перетворення над інформацією, що зберігається в автоматі. Цифровий автомат здатний переходити з одного стану в інший в результаті вхідних інформаційних впливів і видавати вихідну інформацію, що залежить від свого стану і вхідного впливу.
Складність цифрового
автомата в основному визначається
числом станів та обсягів вхідних
впливів. Чим більше число станів
автомата, тим більше він повинен
містити запам'ятовуючих