Организация памяти в микроконтроллерах


 

Вся серия MCS-51 имеет гарвардскую архитектуру - раздельное адресное пространство программ и данных. Эта архитектура по сравнению с фон-неймановской обладает более высокой производительностью и позволяет создавать более эффективные по объему памяти программы. Программная память (CSEG) доступна только для чтения, ее организация показана на рис. 12.2. Память данных доступна для чтения и записи, ее организация показана на рис.12.3.

 


Пространство памяти программ CSEG адресуется 16-разрядным счетчиком команд PC и, следовательно, может иметь объем до 64Кбайт. Часть этой памяти (4, 8, 16, 32К в зависимости от типа микросхемы) может быть расположена непосредственно на кристалле в виде масочного ПЗУ (ROM), либо репрограммируемого ПЗУ (EPROM). Она образует внутреннюю память программ. Оставшаяся часть, реализуемая внешними средствами (установкой внешнего ПЗУ), называется внешней памятью программ. Для программиста как внутренняя, так и внешняя память представляет собой единое пространство CSEG с равными правами доступа. При считывании команд из внешней программной памяти формируется инверсный сигнал «строб чтения внешнего ПЗУ» PSEN* (Program Store Enable) для всех адресов, кроме области встроенного ПЗУ. (Символом «*» будем обозначать инверсное значение сигнала).

Младшие 4К байт (8, 16, 32К - для различных модификаций) памяти программ размещаются на кристалле МК или находятся во внешнем ПЗУ, что определяется переключением вывода «внешний доступ» EA* (External Access) соответственно, либо к Vcc(напряжение питания) или к Vss(земле). Например, в МК с 4К ПЗУ при подключении EA* к Vcc адреса с 0000h по 0FFFh располагаются во внутреннем ПЗУ, а адреса с 1000h по FFFFh - во внешнем ПЗУ. Если вывод EA* подключен к Vss, то вся программа располагается во внешнем ПЗУ. Аппаратная реализация подключения внешней программной памяти показана на рис.12.4.

 

Некоторые ячейки CSEG имеют особое назначение (как правило содержат адреса переходов по прерываниям и точку входа при инициализации системы), как показано в табл.12.1:

Таблица 12.1

Таблица векторов прерываний микроконтроллера

Источник прерывания Вектор прерывания Назначение
RESET 0000H Стартовый адрес при сбросе системы
EINT 0 0003H Внешнее прерывание 0
TIMER0 000BH Прерывание таймера/счетчика 0
EINT 1 0013H Внешнее прерывание 1
TIMER1 001BH Прерывание таймера/счетчика 1
SINT 0023H Прерывание последовательного порта

 

В пространстве CSEG определены два основных способа передачи управления:

Абсолютный (с применением 16-битного адреса):

LCALL addr16 ;+(SP)PC, PC0-15addr16

LJMP adr16 ; PC0-15addr16.

Относительный (при помощи 8-разрядного смещения rel со знаком):

SJMP rel8 ; PCPC+rel8.

Наличие знака при rel позволяет осуществить переход в сторону как старших так и младших адресов.

Реализован вариант передачи управления внутри 2К-байтной страницы (адрес содержит 11 бит):

ACALL addr11 ;+(SP) PC, PC0-10addr11

AJMP addr11 ; PC0-10addr11.

Кроме того предусмотрен переходпо смещению относительно базы DPTR

JMP@A+DPTR ; PCDPTR+A.

Специальная команда пересылки позволяет читать в A содержимое программной памяти (например для извлечения из памяти каких-либо констант):

MOVC A,@A+DPTR ;ACSEG(A+DPTR)

MOVC A,@A+PC ;ACSEG(A+PC).

Память данных, как указано выше, доступна для чтения и записи, и ее организация показана на рис.12.3. Возможно использование как внутренней (DSEG), так и внешней памяти (XSEG) данных.

На рис. 12.5. показано подключение внешней памяти данных, для управления которой процессор генерирует сигналы RD* и WR*. Возможна адресация до 64К внешней памяти.

Адрес может иметь размер один или два байта. Однобайтовая адресация часто используется при страничной организации ОЗУ. При использовании двухбайтовой адресации старший байт адреса выводится через порт 2.

 


Внутренняя память данных (DSEG) может быть (как показано на рис.12.6) разделена на три условных блока-«нижний» (lower), «верхний» (upper) и блок Регистров Специальных Функций (SFR).

Внутренняя память данных всегда адресуется байтом, что определяет 256 байт ее адресного пространства. Блок верхних 128 байт и блок SFR занимают одно и то же адресное пространство - от 80h до FFh, но разделены физически. Прямая адресация осуществляет доступ к блоку SFR, а косвенная - к блоку верхних 128 байт.

Верхняя 128-байтная половина ОЗУ в микросхеме 8051 отсутствует, но имеется в ряде МК других типов (8032Х, 8052Х, 8752Х и др.)

FFh. . .80h   Область внутреннего ОЗУ (Upper 128) доступна в режиме косвенной адресации (на МК 8051 отсутствует) Область регистров специальных функций (SFR) доступна только в режиме прямой адресации
7Fh. . .00h   Область внутреннего ОЗУ (Lower 128)доступна в режимах косвенной и прямой адресации (присутствует во всех МК MCS-51)

 

Рис. 12.6. Структура внутренней память данных

 

Блок нижних 128 байт присутствует на всех кристаллах MCS-51 и может адресоваться как прямо, так и косвенно.

С другой стороны, для хранения булевых данных в архитектуре MCS-51 предусмотрено одноразрядное линейно упорядоченное пространство BSEG объемом 256 байт, которое физически совмещено с байтовым пространством данных DSEG. При этом одна часть пространства BSEG попадает в область Lower 128 DSEG, а другая часть BSEG - в область SFR DSEG.

На рис. 12.7. показано использование ячеек памяти блока нижних 128 байт.

  A B C D E F
R0 RB0 R1 RB0 R2 RB0 R3 RB0 R4 RB0 R5 RB0 R6 RB0 R7 RB0 R0 RB1 R1 RB1 R2 RB1 R3 RB1 R4 RB1 R5 RB1 R6 RB1 R7 RB1
R0 RB2 R1 RB2 R2 RB2 R3 RB2 R4 RB2 R5 RB2 R6 RB2 R7 RB2 R0 RB3 R1 RB3 R2 RB3 R3 RB3 R4 RB3 R5 RB3 R6 RB3 R7 RB3
00- -07 08- -0F 10- -17 18- -1F 20- -27 28- -2F 30- -37 38- -3F 40- -47 48- -4F 50- -57 58- -5F 60- -67 68- -6F 70- -77 78- -7F
                               
                               
                               
                               
                               

 

Рис.12.7. Блок нижних 128 байт внутреннего ОЗУ

 

Первые 32 байта блока сгруппированы в 4 банка (RB0-RB3) по 8 восьмиразрядных регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0-R7. Банки переключаются программно разрядами RS регистра Слова Состояния Программы (PSW). Регистровые банки позволяют более эффективно использовать память программ, так как регистровые инструкции короче, чем прямая адресация. Регистры R0 и R1 каждого банка реализуют также функции 8-разрядных указателей данных.

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

Размещение регистров специальных функций SFR изображено в табл.12.2. Эти регистры включают в себя регистры портов, таймеры, средства управления периферией, доступные при прямой адресации.

Таблица12.2

Регистры специальных функции (SFR) при байтной адресации

Мнемоника Назначение Адрес
B* Регистр B F0h
ACC* Аккумулятор E0h
PSW* Слово состояния программы D0h
IP* Регистр приоритетов прерываний B8h
P3* Порт 3 B0h
IE* Регистр разрешения прерываний A8h
P2* Порт 2 A0h
SBUF Буфер последовательного порта 99h
SCON* Управление последовательным портом 98h
P1* Порт 1 90h
TH1 Таймер. Счетчик 1. Старший байт 8Dh
TH0 Таймер. Счетчик 0. Старший байт 8Ch
TL1 Таймер. Счетчик 1. Младший байт 8Bh
TL0 Таймер. Счетчик 0. Младший байт 8Ah
TMOD Регистр режима таймера/счетчика 89h
TCON* Регистр управления таймера/счетчика 88h
PCON Регистр управления энергопотреблением 87h
DPTR DPH DPL Регистр указателя данных Старший байт Младший байт   83h 82h
SP Указатель стека 81h
P0* Порт 0 80h

(Символ «*» обозначает возможность побитной адресации регистров).

Для 16 адресов в пространстве SFR имеется возможность как байтовой, так и битовой адресации (рис.2.9). Побитно - адресуемыми регистрами являются регистры, чей шестнадцатиричный адрес заканчивается на 0 или 8. Битовые адреса в этой области (BSED) располагаются со значения 80h по FFh. Все семейство MCS-51 имеет базовый набор SFR, как микросхеме 8051по тем же адресам. Однако в кристаллах, представляющих собой дальнейшее развитие 8051, имеются и некоторые дополнительные регистры (АЦП, сторожевого таймера и т.д.), отсутствующие в базовом варианте.

Основным арифметическим регистром является аккумулятор A. Команды, предназначенные для побитной работы с аккумулятором, применяют мнемонику «ACC». Например:

MOV ACC.0,C ;пересылка в младший бит аккумулятора флага переноса.

Регистр B служит расширением аккумулятора A и необходим для операций умножения и деления, при этом он является как источником, так и приемником операндов. В остальных операциях функция регистра B определяется пользователем.

Регистр слова состояния программы (PSW) содержит статусные биты, отражающие текущее состояние процессора: признаки переноса, переполнения, четности и др.

Указатель стека SP используется для указания на вершину стека в операциях записи в стек и чтения из него (неявно используется командами PUSH, POP,CALL, RET, RETI). По аппаратному сбросу ЦП устанавливается в значение 07h (область стека начинается с адреса внутренней памяти данных 08h) и инкрементируется при каждой записи в стек. Глубина стека возможна до 256 байт.

Указатель данных DPTR состоит из двух байт: старшего - DPH и младшего - DPL. Обращение - только байтное, отдельно к старшему и младшему байтам. Используется как 16-ти или 8-битовый указатель адреса при пересылке констант из памяти программ (CSEG) и при доступе к переменным из внешней памяти данных (XSEG), а также для организации передачи управления.

При сбросе МК все регистры устанавливаются в исходное состояние. Программный счетчик PC принимает значение 0000H, аккумулятор A-00H, B-00H, PSW-00H, SP-07H, DPTR-0000H.

 



Дата добавления: 2021-12-14; просмотров: 379;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.