Микропроцессоры и микроконтроллеры

 
 
 
«'Legacy code' often differs from its suggested alternative by actually working and scaling.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Принципи програмування MSC-51 :: Резидентні пам'ять даних

Резидентні пам'ять даних

РПД є найбільш гнучким адресним простором, який дозволяє реалізувати режими прямий, регістровий, непрямої та бітової адресації. РПД складається з таких областей:

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 rn rn rn 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

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

Прапор допоміжного переносу. Встановлюється і скидається тільки апаратно при виконанні команд додавання і віднімання у разі виникнення переносу або позику в бите 3 акумулятора.

rn

Вільний прапор. Може бути змінений програмно і використовується за призначенням, встановленим програмістом.

rn

Вибір банку регістрів. Біти встановлюються і скидаються програмно для вибору активного (робочого) банку регістрів:

rn
rn

RS1

rn
rn

RS0

rn
rn

Активний банк

rn
rn

Адреси РПД

rn
rn

0

rn

0

rn

1

rn

1

rn
rn

0

rn

1

rn

0

rn

1

rn
rn

0

rn

1

rn

2

rn

3

rn
rn

00Н-07Н

rn

08Н-0FH

rn

10H-17H

rn

18H-1FH

rn
rn

Прапор переповнення. Встановлюється і скидається апаратно при виконанні арифметичних операцій у разі переповнення акумулятора. Дає можливість правильно виконувати дії над числами, представленими в додатковому коді.

rn

Не використовується.

rn

Прапор паритету. Встановлюється і скидається апаратно в кожному циклі команди, фіксує факт непарній кількості "1" в акумуляторі.

rn
rn

вказівний регістр DPTR

rn

DPTR - двухбайтний регістр-покажчик даних - є базовим регістром для непрямої адресації зі зверненням до зовнішньої пам'яті. Оскільки в МК51 відсутні засоби прямої адресації зовнішньої пам'яті, DPTR - це єдиний засіб доступу до осередкам ВП. DPTR може функціонувати як два незалежних регістр: DPH і DPL.




<< Предыдущая статья
«Логічна організація пам'яті в МК51»