|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Програмна модель мікроконтролера 8051
У попередньому розділі було відзначено, що ядром сімейства MCS-51 є мікроконтролер 8051 (вітчизняний аналог КР1816ВЕ51). У зв'язку з цим видається доцільним розгляд особливостей програмування зазначеного сімейства на прикладі саме цього мікроконтролера. Програмна модель МК 8051 містить резидентну пам'ять даних, регістри спеціальних функцій, резидентну пам'ять програм і програмний лічильник PC. Резидентна пам'ять програм (мал.1) має байтову організацію і доступна тільки для читання, при цьому її осередку (4 Кбайт) адресуються з використанням дванадцяти молодших розрядів PC. Резидентна пам'ять програм може бути доповнена зовнішньою пам'яттю. У цьому випадку загальний максимально допустимий обсяг пам'яті програм складе 64 Кб. Молодші адреси резидентної пам'яті програм відведені під обробку зовнішніх переривань Резидентна пам'ять даних (мал.2) складається з 128-ми 8-розрядних комірок з адресами 00H-7FH і може бути доповнена зовнішньою пам'яттю даних ємністю до 64 К. При цьому простір резидентної і зовнішньої пам'яті не перетинаються, тому що доступ до них здійснюється за допомогою різних команд.
Розподіл резидентної пам’яті
Таблиця 2.1 Регістри спеціальних функцій
Молодші 32 байта РПД згруповані в 4 банки по 8 регістрів R0-R7 у кожнім. Відзначимо, що Банк0, Банк1, Банк2 і Банк3 займають відповідно адреси 00H-07H, 08H-0FH, 10H-17H і 18H-1FH. Наступні після банків регістрів 16 байт (адреси 20H-2FH) чи 128 біт (адреси 00H-7FH) утворять область осередків, до яких можливе побітове звертання. Набір команд МК 8051 містить значну кількість інструкцій, що дозволяють працювати з зазначеними бітами. Область регістрів спеціальних функцій (РСФ) (мал.2) містить 21 регістр, призначення яких приведено в табл.2.1. Як видно з мал.2 і табл.2.1, 11 РСФ допускають побітове звертання (біти з адресами 80H-0F7H).
Порти P0, P1, P2, P3 є двохнаправлені порти вводу/виводу і призначені для забезпечення обміну інформацією МК із зовнішніми пристроями, вони можуть утворити 32 лінії вводу/виводу. Крім звичайного вводу/виводу зазначені порти можуть виконувати ряд додаткових функцій. Зокрема, при роботі МК із зовнішньою пам'яттю програм чи даних через порти P0 і P2 виводяться відповідно молодший і старший байти адреси, крім того через порт P0 видається (приймається) байт даних (байт даних або байт команд). При цьому обмін байтом даних, ввід байта команди і вивід молодшого байта адреса зовнішньої пам'яті мультиплексовані в часі. Лінії порту P3 мають наступні альтернативні функції: P3.0 (P3.1) - вхід (вихід) послідовного порту; P3.2 (P3.3) - вхід зовнішнього переривання Вказівник стека SP (Stack Pointer) - регістр, вміст якого інкрементується (збільшується на одиницю) перед записом даних у стек при виконанні команд PUSH і CALL. Початкове скидання встановлює покажчик стека в 07H, а область стека в РПД починається з адреси 08H. При необхідності, шляхом перевизначення вказівника стека область стека може бути розташована в будь-якому місці РПД. Вказівник даних DPTR (Data PoinTer)призначений для збереження 16-розрядної адреси зовнішньої пам'яті даних і складається з двох програмно доступних регістрів DPH (Data Pointer High) і DPL (Data Pointer Low), що можуть використовуватися як незалежні регістри загального призначення, якщо немає необхідності в збереженні згаданої адреси. Крім того, DPTR служить базовим регістром при непрямій адресації в деяких командах пересилання даних, чи переходу.
Регістри TH0, TL0, TH1, TL1 (Timer/counter Low (High) byte). Вихідний (поточний) стан j-го таймера/лічильника T/Cj
Регістр TCON (Timer/counter Control). Найменування і призначення розрядів регістра TCON приведені в табл.2.3. Усі розряди цього регістра доступні по записі і по читанню.
Таблиця 2.3
Прапор TFj Регістр TMOD (Timer/counter Mode). Найменування і призначення розрядів регістра TMOD приведені в табл.2.4. Усі розряди цього регістра доступні по записі і по читанню. При роботі як таймер вміст T/Cj Таблиця 2.4
Існує чотири режими роботи кожного таймера/лічильника, які визначаються значенням бiтiв М0, М1 у регiстрi TMOD. Встановлення будь-якого із режимів роботи можливе для кожного з них окремо без взаємного впливу, так як вони повнiстю незалежнi один вiд одного. Режим 0. Цей режим роботи визначається значенням бiтiв М0=0, M1=0. Таймер/лічильник у при цьому є пристроєм на основi 13-розрядного регiстра i функцiонально сумiсний із таймером/лiчильником сiмейства МК48 (восьмирозрядний таймер/лiчильник iз попереднім подiльником на 32). Тринадцятирозрядний регiстр складається iз 8 розрядiв регiстра TH0 i 5 молодших розрядiв регiстра TL0 та iз 8 розрядiв регiстра TH1 i 5 молодших розрядiв регiстра TL1 відповідно для таймера/лічильника T/C0 і T/C1. У цьому режимi функцiю подiльника на 32 виконують регiстри TL0, TL1. Вони є програмно доступними, але треба пам'ятати, що значущими у режимi 0 є тiльки п'ять молодших розрядiв регiстра TL0 (TL1). Розглянем логіку роботи таймера/лічильника у режимi 0. Установка біту C/T в одиницю задає роботу у якості лічильника подій, а запис нуля – як таймера. У режимі таймера джерелом сигналів є частота тактового генератора, поділена на 12. Для лічильника подій джерелом сигналів є зовнішній вивід порту Р3 (Р3.4 – для T/C0 або Р3.5 - для T/C1), якому призначена альтернативна функція входу таймера /лічильника. Рахунок починається при встановленнi бiта TR регiстра TCON у стан "1". При необхiдностi керування лiчбою ззовнi бiт GATE регiстра TMOD встановлюється у стан "1". Тодi при TR=1 рахунок буде дозволено, якщо на входi INT0 встаповлено стан "1" i буде заборонено, якщо встановлено стан "0". Якщо дозволена робота таймера/лічильника, то кожен імпульc, який прийшов від джерела сигналів, попередньо ділитиметься на значення, яке записане у ТL, збільшуватиме вміст регістру TН на одиницю. При переповненні TН (перехiд вмiсту регiстра iз стану "всi одиницi" у стан "всi нулi") встановлюється в одиницю флажок переповнення TF у регiстрi TCON. Якщо дозволене переривання від таймера/лічильника, то буде викликана відповідна підпрограма обробки переривання, а флаг TF апаратно скинеться в нуль. Скид бiта TR в 0 зупиняє роботу таймера/лічильниканезалежно вiд стану інших бiтiв. Режим 1. Цей режим роботи визначається значенням бiтiв М1=0, M0=1. Він аналогiчний режиму 0. Вiдмiннiсть полягає у тому, що в цьому режимі таймер/лічильник працює як 16-розрядний регiстр, що складається із двох програмно доступних пар TL і TH. Режим 2. Цей режим роботи визначається значенням бiтiв M1=1, M0=0. У цьому режимi таймер/лічильник є восьмирозрядним пристроєм на основі регiстра TL0. При кожному переповненнi TL, крiм встановлення у регiстрi TCON флага TF вiдбувається автоматична перегрузка вмiсту iз TH у TL. Регiстри TH завантажуються програмно. Перезапис значень iз TH в TL не впливає на вмiст регiстрiв TH. Призначення бiтiв керування TR, GATE, TF, C/T таке ж, як і у режимах 0 та 1. Режим 3. Цей режим роботи визначається значенням бiтiв M1=1, M0=1. На відміну від режимів роботи 0, 1, 2, які однаковi для обох таймерів/лічильників, у режимі 3 таймер/лічильник 1 блокується, зберігаючи дані пари регістрів TH1та TL1 і доступ до них не впливаючи на С/Т 0. При встановленні цього режиму роботи для таймера/лічильника 0 він перетворюється в пару двох незалежних восьмибітних регістрів TH0 та TL0. При цьому TH0 працює тільки в режимі таймера, який підраховує машинні цикли (тактову частоту генератора ділену на 12). Його запуск/зупинка дозволяється установкою/скидом біту TR1 а про переповнення свідчить установка біту TF1. TL0 працює восьмибітний таймер/лічильник. Біти керування TR0, GATE0, TF0, C/T0 мають таке ж призначення як і для режимів 0,1,2. Якщо таймер/лічильник 0 працює в режимі 3, то таймер/лічильник 1 може бути включеним, виключеним, переведеним у власний режим 3, використаним послідомним портом для генерації частоти обміну. Слід пам’ятати, що при цьому таймер/лічильник 1 не генеруватиме сигнала переповнення (переривання).
Регістр SCON (Serial port Control) призначений для прийому і збереження коду, що керує послідовним інтерфейсом. Найменування і призначення розрядів регістра SCON приведені в табл.2.5. Усі розряди цього регістра програмно доступні по запису і читанню.
Таблиця 2.5
У режимах 2 і 3 при SM2=1 прапор RI не активізується (не встановлюється в "1"), якщо дев'ятий прийнятий біт даних дорівнює "0". У режимі 1 при SM2=1 прапор RI не активізується, якщо не прийнятий стоп-битий рівний "1". У режимі 0 біт SM2 не використовується і повинний бути скинутий у "0". Прапор TI апаратно встановлюється в "1" наприкінці періоду передачі 8-го біта в режимі 0 чи на початку періоду передачі стоп-бита в інших режимах. Прапор RI апаратно встановлюється в "1" наприкінці періоду прийому 8-го біта в режимі 0 чи в середині періоду прийому стоп-бита (дев'ятого біта) у режимі 1 (у режимах 2 і 3) при SM2=0. Режим 2 і режим 3 послідовних портів дозволяють організувати роботу мікроконтролерів 8051 у багатопроцесорних системах, що використовують для обміну інформацією між МК розділений моноканал (коаксіальний кабель, витіі пари, оптоволокно й ін.). У цих режимах прапор RI установиться тільки в тому випадку, коли або SM2=0, або прийнятий дев'ятий біт даних дорівнює "1". Зазначену особливість роботи послідовного порту можна використовувати для організації межконтроллерного обміну в такий спосіб. Нехай ведучому МК потрібно передати блок даних якомусь (декільком) відомому (відомим) МК. З цією метою ведучий МК у протокольному режимі "широкомовної" передачі (усім відомим МК) видає в моноканал байт-ідентифікатор абонента (код адреси МК-приймача), що відрізняється від байтів даних тільки тим, що в його дев'ятому біті міститься "1". Програма реалізації протоколу мережного обміну інформацією повинна бути побудована таким чином, щоб при одержанні байта-ідентифікатора у всіх відомих МК відбулися переривання прикладних програм і виклик підпрограми порівняння байта-ідентифікатора з кодом власної мережної адреси. Адресований МК скидає свій керуючий біт SM2 у "0" і готується до прийому блоку даних. Інші відомі МК, адреса яких не збігся з кодом байта-ідентифікатора, залишають незмінним стан SM2=1 і передають керування основній програмі. Байти даних, що надходять по моноканалу в послідовний порт відомих мікроконтролерів у який SM2=1, переривання не викликають (не встановлюється прапор RI), тобто ігноруються. Регістр SBUF (Serial port Buffer). Через SBUF забезпечується програмний доступ до регістрів передавача і приймача послідовного порту. Причому передача починається будь-якою командою мікроконтролера, що використовує SBUF як регістр призначення, тобто виконуючої операцію "запис у SBUF". Регістр PCON (Power Control). Конструкція регістра PCON визначається технологією виготовлення мікроконтролера. Для варіанта виготовлення по технологи n-МОП (8051) регістр PCON має лише один біт - SMOD, керуючий швидкістю передачі послідовного порту. Для варіанта виготовлення за технологією КМОП (80С51) найменування і призначення розрядів регістра PCON приведені в табл.2.2. Для 8051 і 80С51 розташування і призначення розряду SMOD ідентичні. Біти GF0 і GF1 користувач може задіяти за своїм розсудом. Якщо в PD і IDL одночасно записана "1", то перевага має PD. Особливості режиму холостого ходу і режиму мікроспоживання полягають у тім, що при першому блокуються тільки вузли, що складають центральний процесор мікроконтролера (тактовий генератор продовжує функціонувати), а при другому блокується робота усіх вузлів. Струми споживання мікроконтролера 80С51 у режимах холостого ходу і мікроспоживання складають відповідно не більш 4,2 мА і не більш 50 мкА. Для закінчення режиму холостого ходу існують два способи. Активізація будь-якого дозволеного переривання автоматично приведе до скидання біта IDL у "0", закінчуючи режим холостого ходу, при цьому стан резидентної пам'яті даних і РСФ залишається таким же, яким він був на момент переходу в зазначений режим. Після виконання команди (інструкції), що забезпечує вихід з підпрограми обслуговування переривання, буде виконуватися інструкція, яка першою стоїть за командою, що перевела контролер в режим холостого ходу. Іншим способом закінчення режиму холостого ходу є ініціалізація (скидання) мікроконтролера. У цьому випадку зберігається тільки вміст РПД. Зазначений спосіб використовується і для закінчення режиму мікроспоживання. Таблиця 2.2
Регістр IE (Interrupt Enable) використовується для дозволу чи заборони переривань від відповідних джерел. Найменування і призначення розрядів регістра IE приведені в табл.2.6. Усі біти зазначеного регістра програмно доступні по запису і читанню. Таблиця 2.6
Програма обробки переривання з низьким рівнем пріоритету може бути перервана запитом переривання з високим рівнем пріоритету, але не може бути перервана іншим запитом переривання з низьким рівнем пріоритету. Програма обробки переривання з високим рівнем пріоритету не може бути перервана ніяким іншим запитом переривання від жодного з джерел. Якщо два запити з різними рівнями пріоритету прийняті одночасно, спочатку буде обслугований запит з високим рівнем пріоритету. Якщо одночасно прийняті запити з однаковим рівнем пріоритету, обробка їх буде проводитися в порядку, що задається послідовністю внутрішнього опитування прапорів переривань. Таким чином, у межах одного пріоритетного рівня існує ще одна структура пріоритетів:
Необхідно особливо підкреслити, що структура "Пріоритет усередині рівня" працює тільки в тих випадках, коли визначається послідовність обслуговування запитів на переривання, що прийняті одночасно і при цьому мають однаковий рівень пріоритету. Регістр IP (Interrupt Priority) використовується для установки рівня пріоритету переривання для кожного з п'яти джерел переривань. Найменування і призначення розрядів регістра IP приведені в табл.2.7. Усі біти цього регістра програмно доступні по запису і читанню. Наявність у заданому розряді регістра IP "1" установлює для відповідного джерела високий рівень пріоритету, а наявність "0" - низький рівень пріоритету. Таблиця 2.7
Регістр PSW (Program Status Word). Найменування і призначення розрядів регістра PSW приведені в табл.2.8. Таблиця 2.8
Акумулятор A являє собою 8-розрядний регістр, що є джерелом операнда і місцем фіксації результату при виконанні арифметичних, логічних операцій і ряду операцій передачі даних. Крім того, тільки з використанням акумулятора можуть бути виконані операції зрушень, перевірки на нуль, формування прапора паритету і т.п. Регістр B - 8-розрядний регістр, що використовуваний спільно з акумулятором при виконанні операцій множення і ділення для збереження другого вхідного операнду і для прийому розширення 8-ми бітового результату. В інших операціях регістр B є звичайним регістром загального призначення.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.018 сек.) |