Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Организация памяти МК SAB 80C515.




В отличие от процессоров персональных компьютеров, которые, как правило, имееют традиционную структуру фон Неймана, предполагающую расположение комманд и данных в едином адресном пространстве памяти, микроконтроллеры семейства MCS-51, в том числе и SAB 80C515 реализованы в соответствии с Гарвардской архитектурой. Они имеют раздельные (физически и логически) адресные пространства памяти – память программ и память данных, которые выполняют различные функции. Для доступа к указанным областям памяти используются отличные механизмы адресации и различные управляющие сигналы: - для доступа к ПЗУ и при обращении к ОЗУ.

Полное пространство памяти МК SAB 80С515 показано на рисунке.

Полное пространство памяти МК SAB 80С515

Память программ с байтовой организацией и объемом до 64 Кбайт доступна только по чтению. Младшие 8 Кбайт программной памяти МК SAB 80С515 размещаются на кристалле МК. Как правило, элементы программной памяти адресуются с помощью 16-битного счетчика команд PC, но в некоторых командах (при выборке констант) могут косвенно адресоваться с использованием 16-разрядного указателя DPTR (команды вида MOVC A,@+DPTR).

Доступ к внешней памяти программ (ВПП) разрешен либо если активизирован вход отключения внутреннего (резидентного) ПЗУ (), либо, если содержимое счетчика команд PC превышает значение 1FFFh, т.е. происходит обращение к программной памяти вне первых 8 Кбайт ее адресного пространства.

Существующие различия в механизме доступа к ВПП и внешней памяти данных (ВПД) учитываются на аппаратном уровне: при доступе к ВПД формируются входные сигналы , а при доступе к ВПП - сигнал (Program Store ENable).

Сигнал , выполняющий функцию строба чтения ВПП, активизируется только при обращении к ВПП и остается пассивным при выборке команд из внутренней программной памяти.

При доступе к ВПП для организации внешних шин адреса и данных используются линии портов Р0 и Р2, при этом с помощью линий порта Р0 реализуется мультиплексированная внешняя шина адрес/данные.

При доступе к ВПП 16-разрядный адрес формируется на линиях порта P0 (младший байт) и порта P2 (старший байт). Для демультиплексирования адреса на выходах порта Р0 предназначен выходной сигнал ALE (Address Latch Enable), с помощью которого младший байт адреса фиксируется во внешнем регистре адреса.

Ниже показана функциональная схема включения МК SAB и внешней памяти программ.

 

Временные диаграммы сигналов при работе МК с внешней памятью программ:

 

 

Внутренняя память данных.

Внутренняя память данных микроконтроллеров семейства MCS-51 в адресном пространстве занимает 256 байт. На кристалле размещаются три физически разделенных блока внутренней памяти - блок младших 128 байт ОЗУ с адресами 00 - 7Fh, блок старших 128 байт ОЗУ с адресами 80h - FFh и блок регистров специальных функций SFR, размещенный по адресам 80h - FFh. Так как старшие 128 байт внутренней памяти данных и область SFR имеют одинаковое адресное пространство, для их различия используют разные способы адресации: для обращения к регистрам специальных функций можно использовать только прямую адресацию, а доступ к старшим 128 байтам ОЗУ возможен только с использованием косвенной адресации, при этом младшие 128 байт ОЗУ могут адресоваться и прямо, и косвенно. Все обращения к ячейкам внутренней памяти данных всегда осуществляются с использованием короткого 8-разрядного адреса.

Младшие 128 байт ОЗУ в отличие от других областей внутренней памяти данных в свою очередь подразделяются на три области, обладающие специальными свойствами (рис.).

Первые (младшие) 32 байта внутреннего ОЗУ с адресами 00 - 1Fh сгруппированы в четыре банка по 8 регистров общего назначения с именами R0 - R7 в каждом. Выбор рабочего (текущего) банка регистров осуществляется программно с помощью управляемых бит RS0 и RS1 слова состояния PSW. Отличительной особенностью блока рабочих регистров является возможность использования, наряду с прямой и косвенной адресацией, прямой регистровой адресации. Наличие четырех банков рабочих регистров обеспечивает быстрое переключение контекста программы при использовании ограниченного числа подпрограмм или обработчиков внешних прерываний. После инициализации активен банк 0.

Следующие 16 байт внутреннего ОЗУ с адресами 20h - 2Fh образуют область ОЗУ, зарезервированную для хранения 128 программно-управляемых пользовательских флагов. Каждый из указанных флагов имеет прямой 8-битовый адрес в диапазоне 00 - 7Fh. Команды побитовой обработки, работающие с этими флагами, допускают только прямую адресацию бит (косвенная адресация бит невозможна). Естественно, при необходимости область пользовательских флагов можно использовать как область ОЗУ, допускающую прямую и косвенную адресации 8-битных ячеек памяти.

Оставшиеся 80 байт из области младших 128 байт ОЗУ и вся область старших 128 байт ОЗУ - это область обычного ОЗУ, использующего косвенную адресацию всех данных и допускающего прямую адресацию 80 байт из области младших 128 байт.

 

Система команд МК SAB 80C515.

МК SAB 80C515 оперирует с операндами четырех типов: битами, тетрадами (4-битными словами), байтами и 16-битными словами, при этом большинство операндов команд являются байтами.

Для их адресации используются следующие типы адресации: неявная регистровая, прямая, непосредственная, косвенная и разновидность косвенной  базово индексная адресация. Указанные способы адресации обеспечивают обращение к операндам-источникам. При обращении к операндам-приемникам непосредственная и базово-индексная адресации не используются.

Неявная адресация, т.е. способ адресации, в котором адрес операнда не указывается, а сам операнд неявно адресуется кодом команды, используется в большинстве команд, оперирующих с аккумулятором. Кроме того, неявная адресация используется для адресации регистра B в командах умножения и деления, а также для обращения к флагу С в командах битовых операций, при обращениях к регистру DPTR и в командах работы со стеком.

Регистровая адресация применяется только для адресации 8 регистров R0  R7 текущего (рабочего) банка регистров. Так как эти регистры принадлежат пространству младших 128 байт внутреннего ОЗУ, то к ним также можно обратиться, используя прямую и косвенную адресацию через регистр Ri (i = 0, 1) текущего банка регистров.

Прямая адресация, т.е. адресация с указанием 8-битного адреса операнда в коде команды используется для задания адресов младших 128 байт IRAM и адресов регистров блока SFR.

Косвенная адресация используется для обращения к операндам внутренней памяти данных IRAM через регистр Ri (i = 0, 1) и в командах пересылок из внешней/во внешнюю память данных через регистр Ri или DPTR.

Для адресации бит используется только прямая адресация, т.е. адресация, когда в команде содержится 8-разрядный адрес бита. Косвенная адресация бит невозможна.

При обращении к внешней памяти программ для считывания констант используется базово-индексная адресация, обеспечивающая формирование адреса выбираемого байта путем сложения 8-битного беззнакового содержимого аккумулятора с содержимым 16-биного базового регистра, который может быть либо DPTR либо PC.

Операндом команд с непосредственной адресацией может быть только источник непосредственных данных. Непосредственные данные  это константы или прямые адреса, для представления которых используется второй или второй и третий байт команды.

Синтаксис большинства команд ассемблерного языка состоит из мнемонического обозначения функций команды, вслед за которым могут размещаться операнды, указывающие методы адресации и типы данных. Для обозначения типов данных и способов адресации в мнемониках команд применяются следующие обозначения:

Rn  регистры R0  R7 текущего (рабочего) банка регистров;

bit  прямо адресуемый бит, находящийся в IRAM или регистре специальных функций;

#data или #d  8-битная константа, входящая в состав команды;

#data16 или #d16  16-битная константа, входящая в состав команды;

direct  8-битный адрес младших 128 байт IRAM или адрес регистра блока SFR (старшие 128 байт внутренней памяти SFR);

@Ri  обозначение косвенной адресации через регистр Ri (i = 0, 1);

@DPTR  обозначение косвенной адресации через регистр DPTR;

addr16  16-битный адрес безусловной передачи управления;

addr11  11-битный адрес безусловной передачи управления в пределах 2-Кбайтного блока памяти программ, содержащем код команды блока передачи управления;

rel  относительный адрес в командах условной передачи управления и командах короткого безусловного перехода. Rel  8-битное значение смещения со знаком, которое суммируется с содержимым PC для формирования адреса перехода;

/bit  слэш перед операндом в языке ассемблера указывает, что используется инвертированное значение бита-источника, хотя сам бит источника не инвертируется.

Машинные коды команд МК представляются одним, двумя или тремя байтами. Команды выполняются за один или два машинных цикла. Исключение составляют команды умножения и деления, длительность исполнения которых равна 4 машинных цикла.

Систему команд МК удобно представить в виде нескольких групп:

 команды пересылок;

 команды арифметических и логических операций;

 команды битового процессора;

 команды передачи управления.

 

 

Группа команд пересылок (передачи данных)

Команды этой группы не модифицируют флаги результата. Исключение составляет команда загрузки PSW и аккумулятора. При загрузке PSW модифицируются все флаги, а при загрузке ACC  флаг паритета.

Мнемокод КОП Б Ц Функция
MOV A, Rn   1rrr     (A):= (Rn)
MOV A, direct         (A):= (direct)
MOV A, @Ri   011i     (A):= ((Ri))
MOV A, #data         (A):= #data
MOV Rn, A   1rrr     (Rn):= (A)
MOV Rn, direct   1rrr     (Rn):= (direct)
MOV Rn, #data   1rrr     (Rn):= #data
MOV direct, A         (direct):= (A)
MOV direct, Rn   1rrr     (direct):= (Rn)
MOV direct, direct         (direct):= (direct)
MOV direct, @Ri   011i     (direct):= ((Ri))
MOV direct, #data         (direct):= #data
MOV @Ri, A   011i     ((Ri)):= (A)
MOV @Ri, direct   011i     ((Ri)):= (direct)
MOV @Ri, #data   011i     ((Ri)):= #data
MOV DPTR, #data16         ((DPTR)):= #data16
MOVC A, @A+DPTR         (A):= ((A)+(DPTR)) Чтение внешней памяти программ
MOVC A, @A+PC         (A):= ((A)+(PC)) Чтение внешней памяти программ
MOVX A, @Ri   001i     (A):= ((Ri)) Чтение внешней памяти данных
MOVX @Ri, A   001i     ((Ri)):= (A) Запись внешней памяти данных
MOVX A, @DPTR         (A):= ((DPTR)) Чтение внешней памяти данных
MOVX @DPTR, A         ((DPTR)):= (A) Запись внешней памяти данных
PUSH direct         (SP):= (SP)+1 ((SP)):= (direct) запись в стек
POP direct         (direct):= ((SP)) (SP):= (SP)-1 чтение из стека
XCH A, Rn   1rrr     (A) <-> (Rn)  
XCH A, direct         (A) <-> (direct)  
XCH A, @Ri   011i     (A) <-> ((Ri))  
XCHD A, @Ri   011i     (A3-0) <-> ((Ri)3-0)  
SWAP A         Обмен тетрад аккумулятора  
               

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...