Міністерство освіти і науки України
Національнийуніверситет «Львівськаполітехніка»
Кафедра «Телекомунікації»
/
ЛАБОРАТОРНА РОБОТА №1
“Методи введення/виведення на MCS-51”
Тема: Ознайомлення з середовищем роботи.
Мета: Отримати навики роботи програми MCStudio та з мікроконтроллером сімейства MC.
Теоритичні відомості:
Основні вимоги, що споживачі пред'являють до ОМК можна сформулювати в такий спосіб:
- низька вартість,
- висока надійність,
- високий ступінь мініатюризації,
- мале енергоспоживання,
- працездатність у жорстких умовах експлуатації;
- достатня продуктивність для виконання всіх необхідних функцій.
Виконання всіх цих суперечливих умов одночасно важко, тому розвиток і удосконалення ОМК пішло шляхом спеціалізації, і в даний час кількість моделей ОМК надзвичайно велика. Однак можна виділити деякі архітектурні риси, які є загальними практично для всіх сучасних МК:
система команд ОМК зорієнтована на виконання задач керування і регулювання;
алгоритми, що реалізуються на ОМК, мають багато розгалужень залежно від зовнішніх сигналів (подій);
дані, з якими оперують ОМК, мають невелику розрядність;
універсальність і можливість розширення функцій керування значно нижчі, ніж у системах з МП;
інтеграція в одному корпусі мікросхеми (на одному кристалі) практично всіх блоків МПС – ПЗП, ОЗП, пристроїв введення-виведення, тактового генератора, контролера переривань і т.д. Тому в вітчизняної літературі МК часто називають однокристальними ЕОМ.
побудова більшості МК на основі гарвардської архітектури (використання роздільних областей пам’яті та шин для збереження і передавання даних та команд).
Взагалі, сучасні МК, як і інші МПС, будуються на основі однієї з двох базових архітектур: фон-нейманівської або гарвардської.
В архітектурі фон-Неймана використання єдиної області пам'яті дозволяє оперативно перерозподіляти ресурси між областями програм і даних, що істотно підвищує гнучкість МПС із точки зору розроблювача програмного забезпечення. Розміщення стека в загальній пам'яті полегшує доступ до його вмісту. Невипадково тому фон-нейманівська архітектура стала основною архітектурою універсальних комп'ютерів.
Гарвардська архітектура майже не використовувалася до кінця 70-х років, поки виробники МК не зрозуміли, що вона дає суттєві переваги розроблювачам систем керування.
Справа в тому, що для реалізації більшості алгоритмів керування такі переваги фон-нейманівської архітектури як гнучкість і універсальність не мають великого значення. Аналіз реальних програм керування показав, що необхідний обсяг пам'яті даних МК, використовуваний для збереження проміжних результатів, як правило, на порядок менше необхідного обсягу пам'яті програм. У цих умовах використання єдиного адресного простору приводить до збільшення формату команд за рахунок збільшення числа розрядів для адресації операндів. Застосування окремої, невеликої за обсягом пам'яті даних сприяло скороченню довжини команд і прискоренню пошуку інформації в пам'яті даних.
Гарвардська архітектура забезпечує потенційно більш високу швидкість виконання програми в порівнянні з фон-нейманівською за рахунок паралельної реалізації деяких операцій. Наприклад, вибірка наступної команди може відбуватися одночасно з вибіркою операндів для виконанням попередньої, і немає необхідності «зупиняти» АЛП процесора на час вибірки команди. Це надає можливость забезпечувати виконання різних команд за однакове число тактів.
Однак, гарвардська архітектура є недостатньо гнучкою для реалізації деяких програмних процедур. Тому порівняння МК, виконаних на основі різних архітектур, варто проводити стосовно до конкретних задач.
МК звичайно класифікують по розрядності оброблюваних чисел:
- чотирирозрядні – найпростіші і найдешевші;
- восьмирозрядні – найбільш чисельна група, що забезпечує оптимальне співвідношення вартості і можливостей; до цієї групи відносяться МК серії MCS-51 (Intel) і сумісні з ними, PIC (MicroChip), HC68 (Motorola), Z8 (Zilog) та ін.;
- шістнадцатирозрядні – MCS-96 (Іntel) та ін. – більш високопродуктивні;
- тридцатидворозрядні – звичайно є модифікаціями універсальних мікропроцесорів, використовуються для вирішення найбільш складних задач (наприклад, адаптивного керування).
Найбільш розповсюджені у дійсний час восьмирозрядні ОМК, широко використовувані в промисловості, побутовій і комп'ютерній техніці. Причиною життєздатності 8-розрядних МК є використання їх для керування реальними об'єктами, де застосовуються, в основному, алгоритми з переважно логічними (побітовими) операціями, швидкість виконання яких практично не залежить від розрядності процесора.
Сучасні 8-розрядні МК мають наступні особливості:
- модульна організація, при якій на базі одного процесорного ядра проектується ряд (лінійка) МК, що розрізняються обсягом і типом пам'яті програм, обсягом пам'яті даних, набором периферійних модулів, частотою синхронізації;
- використання закритої архітектури МК. Тобто МК являє собою закінчену систему обробки даних, нарощування можливостей якої з використанням паралельних магістралей адреси і даних не передбачається;
- використання типових функціональних периферійних модулів (таймери, процесори подій, контролери послідовних інтерфейсів, АЦП й ін.), що мають незначні відмінності в алгоритмах роботи в МК різних виробників;
- декілька режимів функціонування периферійних модулів, що задаються в процесі ініціалізації регістрів спеціальних функцій МК.
В дійсний час, серед усіх 8-розрядних МК, сімейство MCS51 є безсумнівним чемпіоном з кількості різновидів і кількості компаній, що випускають його модифікації. Воно одержало свою назву від першого представника цього сімейства -- МК і8051, випущеного в 1980. Вдалий набір периферійних пристроїв, можливість гнучкого вибору зовнішньої або внутрішньої програмної пам'яті і невисока вартість забезпечили цьому МК успіх на ринку. З погляду технології МК і8051 був для свого часу дуже складним виробом -- у кристалі було використано 128 тис. транзисторів, що в 4 рази перевищувало кількість транзисторів у 16-розрядному мікропроцесорі 8086.
Важливу роль у досягненні такої високої популярності сімейства 8051 зіграла відкрита політика фірми Intel, спрямована на широке поширення ліцензій на ядро 8051 серед великої кількості провідних компаній - виробників світу.
У результаті на сьогоднішній день існує більш 200 модифікацій МК сімейства 8051, що випускаються майже 20-ю компаніями. Ці модифікації містять у собі кристали з найширшим спектром периферії: від простих 20-вивідних пристроїв з одним таймером до 100-вивідних кристалів з 10-розрядними АЦП, масивами таймерів-лічильників, апаратними 16-розрядними помножувачами і 64 Кб програмної пам'яті на кристалі. Основними напрямками розвитку є: збільшення швидкодії (підвищення тактової частоти і вдосконалення архітектури), збільшення обсягу ОЗП і FLASH- пам'яті на кристалі з можливістю внутрісхемного програмування, використання складних периферійних пристроїв.
Усі МК із сімейства MCS-51 мають загальну систему команд. Наявність додаткового устаткування впливає тільки на кількість регістрів спеціального призначення.
Базовою моделлю сімейства МК MCS51 і основою для всіх наступних модифікацій є МК і8051. Це -- восьмирозрядний ОМК, що має:
- вбудований тактовий генератор;
- адресний простір пам'яті програм -- 64 КБ;
- адресний простір пам'яті даних -- 64 КБ;
- внутрішню (резидентну) пам'ять програм ПЗП -- 4 КБ;
- внутрішню (резидентну) пам'ять даних ОЗП -- 128 байт;
- додаткові можливості по виконанню операцій булевої алгебри (побітових операції);
- 32 двонапрямлені й індивідуально адресовані лінії введення/виведення (порти Р0-Р3);
- послідовний порт (Serial Port);
- 2 шістнадцатирозрядні багатофункціональні таймери/лічильники (Т/С 0, Т/С 1);
- повнодуплексний асинхронний прийомопередавач;
- векторну систему переривань із двома рівнями пріоритету і шістьма джерелами подій.
Спрощена структурна схема і8051 подана на рис. 2, призначення виводів мікросхеми -- на рис.3.
/
Рис. 2. Структурна схема і8051
Bus control –блок керування; Interrupts control – система переривань; CPU – центральний процесор; OSC – генератор; ROM –ПЗП; RAM – ОЗП; I/O ports – порти введення-виведення.
Рис. 3. Призначення виводів I-8051.
Позначення сигналів на рис. 3:
Uss -- потенціал загального проводу ("землі");
Ucc -- основна напруга живлення +5 В;
XTAL1, XTAL2 -- виводи для підключення кварцового резонатора;
RESET -- вхід загального скидання МК;
PSEN -- дозвіл зовнішньої пам'яті програм;
ALE -- строб адреси зовнішньої пам'яті;
ЕА -- відключення внутрішньої програмної пам'яті;
P1 -- восьмибітний квазідвонапрямлений порт введення/виведення (кожен розряд порту може бути запрограмований як на введення, так і на виведення інформації);
P2 -- порт, аналогічний Р1; крім того, виводи цього порту використовуються для видачі адресної інформації при звертанні до зовнішньої пам'яті програм або даних;
РЗ -- аналогічний Р1; крім того, виводи цього порту можуть виконувати ряд альтернативних функцій, що використовуються при роботі таймерів, порту послідовного введення/виведення, контролера переривань, і зовнішньої пам'яті програм і даних;
P0 — восьмибітний двонапрямлений порт введення/виведення інформації.
Зовнішня пам'ять даних призначена для тимчасового зберігання інформації, використовуваної в процесі виконання програми. Ця пам'ять фізично повинна бути підключена до мікросхеми мікроконтролера за допомогою схеми, зображеної на рис. 3. Максимальний об'єм цієї пам'яті визначається регістром DPTR і складає 64 Кбайта. Точно також як і у разі зовнішньої пам'яті програм, об'єм зовнішньої пам'яті даних може бути збільшений за рахунок використання портів P1 і P3 до 1 Гбайта. Зовнішня пам'ять даних для своєї роботи вимагає використання портів P0, P2 і P3. Це приводить до збільшення габаритів пристрою, збільшенню рівня перешкод і, зрештою, збільшення вартості пристрою в цілому. Тому в сучасних пристроях зовнішня пам'ять не використовується. Проте, в деяких мікроконтролерах (наприклад 87с550 фірм DALLAS) команди звернення до зовнішньої пам'яті використовуються для роботи з додатковою внутрішньою пам'яттю великого об'єму.
Внутрішня пам'ять даних мікроконтролерів MCS-51
Внутрішня пам'ять даних (RAM) призначена для тимчасового зберігання інформації, яка використовується в процесі виконання програми. Внутрішня пам'ять даних містить 128 восьмирозрядних комірок (регістрів), з адресами від 000h до 07Fh для мікроконтролерів 8051, 8031, Кр1816ве31, Кр1816ве51, Кр1816ве751 Кр1830ве31, Кр1830ве51, Кр1830ве751 або 256 восьмирозрядних комірок, з адресами від 000h до 0FFh для решти всіх мікроконтролерів сімейства. Розподіл пам'яті даних мікроконтролерів серії MCS-51 приведений на рис 4.
Адреси з 080h по 0FFh використовуються регістрами спеціальних функцій.
Молодші 32 байти внутрішнього ОЗП даних об'єднано з 4-ма банками регістрів (RB0 - RB3). Банк регістрів складається з восьми восьмирозрядних регістрів з іменами R0, R1 . ., R7. Банки регістрів служать для організації незалежної роботи декількох паралельно виконуваних програм. Перемикання банків регістрів здійснюється за допомогою двох особливих біт регістра слова стану програми PSW (RS0 і RS1).
Команди програми можуть звертатися до регістрів, використовуючи їх імена R0-R7 (MOV A, R0 або MOV R7, A), або використовуючи їх адресу у внутрішній пам'яті даних (MOV A, 0 або MOV 7, A).
/
Рис. 4. Адресний простір внутрішньої пам'яті даних.
Наступні після банків регістрів внутрішнього ОЗП даних 16 елементів пам'яті (адреси 20Н-2FH) утворюють область пам'яті, до якої можлива як байтова, так і бітова адресація. У цих комірках розміщено 128 програмних прапорів (бітових елементів пам'яті). Звертання до цих комірок можливо по їх бітових адресах. Наприклад команди SETB 15 або JB 15 звертаються до 15 прапора, розташованого в старшому біті байтового елемента пам'яті 21h.
Використання однобітових елементів пам'яті дозволяє скоротити необхідний для роботи програми обєм пам'яті даних.
При визначенні способу адресації операндів в команді необхідно враховувати, що адресація для кожного операнда команди своя. У загальному випадку адресація джерела і приймача можуть не співпадати.
Неявна адресація При неявній адресації регістр джерело або регістр приймач мається на увазі в самому коді операції. Наприклад:
03 RR A ;Зсунути вміст акумулятора управо
D4 DA A ;Виконати десяткову корекцію результату
E8 MOV A, R0 ;В першому операнді використана неявна адресація, а в другому - регістрова
Регістрова адресація використовується для звертання до восьми робочих регістрів вибраного банку робочих регістрів, а також для звертання до регістрів А, В, АВ (здвоєного регістра), DPTR, і до прапора переносу С. Номер регістра записується в трьох молодших бітах команди. Наприклад:
F8 MOV R5, A ;в першому операнді використана регістрова адресація, а в другому - неявна
Пряма байтова адресація використовується для звернення до комірок внутрішньої пам'яті (ОЗП) даних (адреси 0:127) і до регістрів спеціального призначення (адреси 128:256). Адреса елемента пам'яті поміщається в другий байт команди.
Пряма бітова адресація використовується для звертання до окремо адресується 128 бітам, розташованим в комірках з адресами 20Н-2FH, і до бітів регістрів спеціального призначення, що окремо адресуються. Наприклад:
D220 SETB 20h ;використана пряма бітова адресація
C215 CLR 15h ;використана пряма бітова адресація
Косвенно-регістрова адресація використовується для звернення до комірок внутрішнього ОЗП даних. Як регістри-вказівники адресу використовуються регістри R0, R1 вибраного банку регістрів.
Косвенно - регістрова адресація використовується також для звернення до зовнішньої пам'яті даних. В цьому випадку за допомогою регистров-вказівників R0 і R1 (робочого банку робочих регістрів) вибирається комірка з блоку 256 байт зовнішньої пам'яті даних. Номер блоку заздалегідь задається вмістом порта Р2.
Якщо як регістр - вказівник використовується 16 - розрядний вказівник даних (DPTR), то можна вибрати будь-який елемент зовнішньої пам'яті даних об'ємом до 64 Кбайт. (У деяких моделях мікроконтролерів сімейства MSC-51 таким чином можна звертатися до внутрішньої пам'яті даних об'ємом більше 256 байт).
Косвенно-регістрова адресація по сумі базового і індексного регістра (вміст акумулятора А) спрощує проглядання таблиць, записаних в пам'яті програм. Будь-який байт з таблиці може бути вибраний за адресою, яка визначається сумою вмісту DPTR або РС і вмісту А,
Безпосередня адресація дозволяє вибрати з адресного простору пам'яті програм константи, явно вказані в команді.
Хід роботи :
Запустимо програму MCstudio IDE для MCS-51. Робоче вікно програми зображено на рисунку1:
Рис.1 Робоче середовище програми MCStudio
Запустимо новий проект, нажавши Файл->Создать->Проект. У вікні введемо мікропроцесор Intel, 80C51 та задамо ім’я проекту. Скофіюємо файл інціалізайії з proba.asm.
Здійснимо ввід/вивід інформації на цифровий індикатор. Він містить 4 блоки, доступ до яких відбувається за адресами: 0А000hі 0B000h.Програмний код нижче записаної програми виводить послідовно на екран 1111,2222,3333,4444,5555. Після цього цикл починається спочатку. Змоделюємо цей процес на макеті для Proteus. Отримаємо такий результат:
MAIN:
mov A,#0
mov DPTR,#0A004h
movx @DPTR,A
mov A,#11h
mov DPTR,#0A000h
movx @DPTR,A
mov DPTR,#0B000h
mov A,#11h
movx @DPTR,A
CALL ZATR
mov A,#00001111b
mov DPTR,#0A004h
movx @DPTR,A
CALL ZATR
………..
jmp MAIN
ZATR:
mov R1,#0FFh
C2: mov R2,#0FFh
C4: djnz R2,C4
djnz R1,C2
ret
end
Висновок: на цій лабораторній роботі я ознайомилася з методами вводу/виводу інформації у мікроконтролері MCS-51. У ході роботи я змоделювала вивід цифр на індикатор макету мікроконтролера та реалізувала в програмі Proteus.