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