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

 
 
 
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Русский | Українська



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Принципы программирования MSC-51 :: Резидентная память данных

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

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

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.