Резидентні пам'ять даних
РПД є найбільш гнучким адресним простором, який дозволяє реалізувати режими прямий, регістровий, непрямої та бітової адресації. РПД складається з таких областей: rn 1) ОЗУ об'ємом 128 байтів - адреси 00 ... 7FH (0 .. 127); rn 2) блок РСФ - містить 20 однобайтових регістрів, розміщених по адресам, кратним 8, в діапазоні 80 ... FFH (128-255). Інші адреси з цієї області недоступні і є помилковими. rn Внутрішнє ОЗУ передбачає пряму і непряму адресація, а банки робочих регістрів, які входять до нього, - також і регістровий адресація. rn Розташування різних областей в РПД показано на ріс.11.2. rn rn Рис. 11.2. Структура адресації РПД rn Внутрішнє ОЗУ (адреса 00 ... 7FH) складається з таких областей : rn 1. Чотири банку робочих регістрів по вісім байтів в кожному. У процесі роботи МК51 один з банків регістрів вважається активним. Вибір активного банку здійснюється програмним шляхом за допомогою встановлення двох бітів у регістрі прапорів. При цьому регістри активного банку стають доступними через регістровий адресація з символічними іменами R0 ... R7. З цими іменами працюють спеціальні короткі команди, які використовують даний тип адресації. Інші (неактивні) банки адресуються як звичайні комірки ОЗУ. Таким чином у МК51 реалізований "плаваючий" блок Рон. У регістри R0 і R1 можуть використовуватися для непрямої адресації будь-який із 128 осередків внутрішнього ОЗУ. rn 2. Блок комірок ОЗУ з побітовой адресацією. Ці 16 байтов за адресами 20Н ... 2FH передбачають також пряму адресація окремих бітів з адресами 00Н ... 7FH, тобто всього 128 бітів. Для роботи з битами існують спеціальні команди, тому перепутиванія адрес не виникає. Карта бітів внутрішнього ОЗУ, які адресуються окремо, показана на ріс.2.6 в посібнику. rn 3. Блок комірок ОЗУ без особливостей. rn Всі три області передбачають пряму і непряму адресація байтов через регістри R0 і R1 активного банку. rn Організація стека rn Стек в МК51 може займати будь-які послідовно розташовані байти в ОЗУ РПД. Призначення стека таке ж, як і в інших МП. rn Для адресації комірок, які складають стек, використовується восьміразрядний регістр SP. Теоретична глибина стека - 127 байтов, оскільки в діапазоні 80 ... FFH розміщуються РСФ і недоступні адреси. Стек зазвичай розміщують в області ОЗУ, починаючи з адреси 40Н і вище. При включенні живлення або подачі сигналу Reset в (SP) автоматично завантажується код 07H. rn Особливість полягає в тому, що в МК51 стек росте в сторону збільшення адрес, тобто при виконанні команд PUSH та CALL вміст SP збільшується, а при РОР і RET - зменшується. Шляхом запису в SP значення від 0 до 127 можна розмістити стек в будь-якій області в межах ОЗУ РПД. rn Блок регістрів спеціальних функцій (РСФ) rn РСФ також відносяться до РПД і розташовані за адресами, кратним 8, в діапазоні адрес 80Н ... FFH. Одинадцять з 20 регістрів спеціальних функцій мають бітів адресація (табл.2.2, ріс.2.7 в посібнику). rn В мікроконтролера реалізовані наступні РСФ: rn - арифметичні: акумулятор АСС (або A), реєстр множення В, слово rn стану програми PSW; rn - вказівні: SP і DPTR, який складається з пари DPH, DPL; rn - регістри-фіксатори портів введення-виведення Р0, Р1, Р2, Р3; rn - регістри керування системою переривань IP, IE; rn - регістри управління та налаштування таймерів-лічильників TCON, TMOD, rn - Рахункова регістри таймерів TH0, TL0, TH1, TL1; rn - регістри керування послідовним портом SBUF, SCON; rn - Register управління потужністю PCON. rn до регістру СФ можна звертатися як до звичайних комірок ОЗУ з бітової адресацією, і в той же час вони забезпечують роботу багатьох вузлів МК, встановлюють режими їх роботи. Так, програмування різних периферійних пристроїв МК51 на певні режими роботи реалізується як запис у відповідні комірки пам'яті РПД потрібних кодів або шляхом встановлення відповідних бітів з прямою адресацією. Крім того, біти регістрів СФ мають символічні імена, що істотно полегшує програмування на Асемблері. rn Повний перелік всіх РСФ представлений в табл. 2.2 в посібнику. rn Акумулятор і слово стану програми (PSW) rn МК51 має акумуляторно-орієнтовану структуру. Але існує ряд операцій (пересилання, INC, DEC, деякі перевірки), які виконуються без акумулятора. Акумулятор - це регістр з побітовой адресацією, що істотно полегшує аналіз даних з бітової структурою інформації. Акумулятор передбачає два способи адресації: rn - регістровий, якщо посилання на нього міститься в коді операції (як «А »); rn - пряму, шляхом зазначення прямого адреси (0Е0h) або символічного імені "АСС" в адресній частині команди. rn Регістр PSW виконує функцію регістра ознак, які формуються за результатами дій в АЛУ, а також служить для керування вибором активного банку регістрів. PSW - Register з бітової адресацією, що полегшує аналіз ознак і їх встановлення. Окремі біти PSW мають символічні імена, але до них можна звернутися і через ім'я реєстру із зазначенням номера біта: PSW.7, PSW.5. Структура регістра PSW показана на ріс.2.8 в посібнику, а табл.11.2 містить короткі відомості про призначення окремих розрядів даного регістра. rn Т а б л и ц а 11.2 rn Формат регістра PSW - слова стану програми rn rn rn rn rn Назва біти rn | rn rn Позиція rn | rn rn Призначення rn | rn rn rn rn С rn AC rn F0 rn RS1 rn RS0 rn OV rn - rn P rn | rn rn PSW.7 rn PSW.6 rn PSW.5 rn PSW.4 rn PSW.3 rn PSW.2 rn PSW.1 rn PSW.0 rn | rn rn Прапор переносу. Встановлюється і скидається апаратно при виконанні арифметичних, логічних і бітовий операцій, а також програмно. rn Прапор допоміжного переносу. Встановлюється і скидається тільки апаратно при виконанні команд додавання і віднімання у разі виникнення переносу або позику в бите 3 акумулятора. rn Вільний прапор. Може бути змінений програмно і використовується за призначенням, встановленим програмістом. rn Вибір банку регістрів. Біти встановлюються і скидаються програмно для вибору активного (робочого) банку регістрів: rn | rn rn rn rn RS1 rn | rn rn RS0 rn | rn rn Активний банк rn | rn rn Адреси РПД rn | rn rn rn rn 0 rn 0 rn 1 rn 1 rn | rn rn 0 rn 1 rn 0 rn 1 rn | rn rn 0 rn 1 rn 2 rn 3 rn | rn rn 00Н-07Н rn 08Н-0FH rn 10H-17H rn 18H-1FH rn | rn rn rn rn Прапор переповнення. Встановлюється і скидається апаратно при виконанні арифметичних операцій у разі переповнення акумулятора. Дає можливість правильно виконувати дії над числами, представленими в додатковому коді. rn Не використовується. rn Прапор паритету. Встановлюється і скидається апаратно в кожному циклі команди, фіксує факт непарній кількості "1" в акумуляторі. rn | rn rn rn rn вказівний регістр DPTR rn DPTR - двухбайтний регістр-покажчик даних - є базовим регістром для непрямої адресації зі зверненням до зовнішньої пам'яті. Оскільки в МК51 відсутні засоби прямої адресації зовнішньої пам'яті, DPTR - це єдиний засіб доступу до осередкам ВП. DPTR може функціонувати як два незалежних регістр: DPH і DPL.
|