В начало

Организация памяти MCS-51 (Тема)

 

 Все микроконтроллеры семейства MCS-51 имеют Гарвардскую архитектуру, т.е. раздельное адресное пространство программ и данных. Это позволяет осуществлять доступ к памяти данных по 8-битным адресам, что способствует более быстрой обработке данных в ЦП. Также возможно использование и 16-битных адресов данных.

Программная память доступна только по чтению. Общий объем ее адресного пространства составляет 64 Кбайта. В различных версиях МК может присутствовать до 32 Кбайт внутренней памяти программ. При обращении к этим областям памяти используются циклы обмена по внутренней магистрали микроконтроллера. При необходимости можно расширить память программ за счет внешнего ПЗУ. Карта памяти программ представлена на рисунке далее.

 

Рис. 1. Карта программной памяти

 

После сигнала RESET микроконтроллер начинает выполнение программы с адреса 000016 либо внешней, либо внутренней памяти программ, в зависимости от состояния сигнала EA.

Память данных доступна как по чтению, так и по записи. Общий объем ее адресного пространства составляет 64 Кб. Адрес может иметь размер один или два байта. Однобайтная адресация часто используется при страничной организации ОЗУ. Карта памяти данных показана на рисунке ниже.

 

 

Рис. 2. Карта памяти данных

 

Внутренняя память данных может быть разделена на три условных блока – нижний, верхний и пространство регистров специальных функций (SFR) .

 

 

Рис. 3. Карта внутренней памяти данных

 

Внутренняя память данных всегда адресуется байтом, что подразумевает 256 байт адресного пространства. Однако, фактически можно обращаться к 384-м байтам. Прямая адресация ячейки с адресом свыше 7F16 осуществляет доступ к области регистров специальных функций, а косвенная – к верхней области внутренней памяти данных. Т. о., эти две области занимают одно и то же адресное пространство, хотя и разделены физически. Все байты в нижней 128-байтной половине внутренней памяти данных могут адресоваться как прямо, так и косвенно.

Первые 32 байта в нижней области внутреннего ОЗУ сгруппированы в
4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0–R7. Два бита регистра PSW определяют, какой из банков используется в текущий момент. Это позволяет более эффективно использовать память программ, поскольку регистровые инструкции короче, чем прямая адресация. Переключение регистровых банков эффективно заменяет операции сохранения регистров в стеке на время обработки прерывания.

Следующие за регистровыми банками 16 байт образуют блок побитно адресуемого пространства. Набор инструкций MCS-51 содержит широкий выбор операций над битами, а 128 бит (16 байт по 8 бит) в этом блоке могут быть прямо адресованы. Битовые адреса имеют значения от 0016 до 7F16.

Для 16-ти адресов в пространстве SFR имеется возможность как битовой, так и байтовой адресации. Побитово адресуемыми регистрами являются те, чей шестнадцатеричный адрес заканчивается на «0» или «8». Битовые адреса в этой области располагаются со значения 8016 по FF16. Наиболее часто используемыми регистрами специальных функций являются:

– аккумулятор (байтовый адрес 0E016). Используется во всех арифметических и логических операциях в качестве операнда;

– регистр B (байтовый адрес 0F016). Используется при операциях умножения и деления, а также как сверхоперативный регистр;

– слово состояния программы PSW (байтовый адрес 0D016). Содержит информацию о состоянии программы;

указатель стека (байтовый адрес 08116). Используется для указания на вершину стека в операциях записи в стек и чтения из него. По аппаратному сбросу устанавливается в значение 0716 (область стека в этом случае начинается с адреса 0816) и инкрементируется при каждой записи в стек. Запись в SP производится для предопределения положения стека во внутренней памяти данных микроконтроллера;

– указатель данных DPTR (байтовые адреса 08216, 08316). Состоит из двух байт: старшего DPH и младшего DPL. Используется как 16-ти или 8-битовый указатель адреса при обращении к внешней памяти или выполнении команды перехода по косвенному адресу.

Слово состояния программы PSW содержит ряд статусных битов, отражающих текущее состояние процессора.

 

Таблица. Формат PSW

PSW.7

PSW.6

PSW.5

PSW.4

PSW.3

PSW.2

PSW.1

PSW.0

CF (CY)

AF (AC)

F0

RS1

RS0

OV (OF)

P (PF)

 

Назначение отдельных битов PSW указано в таблице далее.

 

Таблица. Назначение битов PSW

Бит

Назначение

CF (CY)

Флаг переноса (Carry Flag)

AF (AC)

Флаг дополнительного переноса (Auxilinary Carry Flag)

F0

Флаг пользователя 0

RS1, RS0

Биты выбора используемого регистрового банка: 00 – банк 0;
01 – банк 1; 10 – банк 2; 11 – банк 3.

OF (OV)

Флаг переполнения (Owerfow Flag)

Зарезервирован. Доступен по чтению и записи.

PF (P)

Флаг четности (Parity Flag)

 


Бит переноса, кроме арифметических операций, используется также и в булевых операциях. Биты RS0 и RS1 используются для выбора одного из 4-х регистровых банков. Бит четности отражает число установленных бит в аккумуляторе: P = 1, если аккумулятор содержит нечетное число единиц, и P = 0, если четное. Т. е., количество ненулевых битов в аккумуляторе плюс P является всегда четным числом. Два бита в PSW ни с чем не связаны и могут использоваться как флаги состояний.

 

95 VISA VIRTUAL (RUS BANK)
95 VISA VIRTUAL (RUS BANK)


Total War: ATTILA
Total War: ATTILA


XCOM: Enemy Unknown The Complete Edition
XCOM: Enemy Unknown The Complete Edition