Микропроцессоры

Построение памяти микроконтроллеров семейства MCS-48

Микроконтроллеры семейства MCS-48 построены по Гарвардской архитектуре. Это означает, что память данных и память программ в этих микросхемах разделены и имеют отдельное адресное пространство. В этих микроконтроллерах имеется три адресных пространства: память программ, внешняя память данных и внутренняя память данных. Такое построение памяти позволяет реализовывать максимально надЈжные системы.

Схема подключения внешних микросхем памяти к микроконтроллерам семейства MCS-48 показана на рисунке 1. Регистр адреса D3 на этой схеме предназначен для запоминания младших 8-ми бит адреса, передаваемых через шину данных/памяти. Старшие четыре бита адреса передаются через шину адреса, совмещенную с портом P2. Во время передачи адреса, микроконтроллер вырабатывает синхроимпульс на ножке ALE. Именно этот импульс позволяет запомнить младший байт адреса в регистре D3.

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

Sx_Proc.gif (12875 bytes)

Рисунок 1. Схема подключения схем внешней памяти к микроконтроллерам семейства MCS-48

Память программ микроконтроллеров MCS-48

Память программ предназначена для хранения программ и имеет отдельное от памяти данных адресное пространство объемом 4 Кбайта, причем для некоторых микросхем (например КР1816ВЕ48, КМ1816ВЕ49) для хранения программ на кристалле микроконтроллера расположено ПЗУ. Это ПЗУ отображается в область младших адресов памяти программ. Учитывая, что выполнение программы после сброса микроконтроллера всегда начинается с нулевого адреса памяти программ, то при включении питания начнет выполняться программа, записанная во внутреннем ПЗУ микроконтроллера. Микроконтроллеры, не имеющие внутреннего ПЗУ (например КР1816ВЕ35 или 8035) могут работать только с внешней микросхемой ПЗУ емкостью до 4 Кбайт. Микроконтроллеры семейства MCS-48 имеют внешний вывод EA, с помощью которого можно запретить работу внутренней памяти, для чего необходимо подать на вывод EA логический "0" (соединить этот вывод с корпусом). При этом внутренняя память программ отключается и, начиная с нулевого адреса, все обращения происходят к внешней памяти программ.

Доступ к внешней памяти программ осуществляется в двух случаях:

  1. при действии сигнала EA=0 независимо от адреса обращения,
  2. в любом случае, если программный счетчик (РС) содержит число большее, чем максимальная ячейка внутренней памяти программ.

Распределение памяти программ микроконтроллера КР1816ВЕ48 представлено ниже:

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

MOVP A, @A и MOVP3 A, @A

Переключение страниц памяти программ осуществляется командами

SEL MB1 ;Выбрать первую страницу

SEL MB0 ;Выбрать нулевую страницу

Рисунок 2. Адресное пространство памяти программ.

Для других микроконтроллеров этого семейства изменяется только объем внутренней памяти программ. При использовании портов P1 и P2 в качестве дополнительных адресных расширителей объЈм доступной внешней памяти программ может быть увеличен до 16 Мбайт.

Ниже приведены адреса векторов прерываний и соответствующие им аппаратурные источники прерываний программы:

Вектор прерывания

Флаги, вызывающие прерывание

Источник прерывания

0000Н

-

Рестарт (сброс) контроллера RESET

0003Н

IE

внешнее прерывание INT

0007Н

TF

Таймер

Внешняя память данных микроконтроллеров MCS-48

Внешняя память данных предназначена для временного хранения информации, используемой в процессе выполнения программы. Эта память физически должна быть подключена к микросхеме микроконтроллера при помощи схемы, изображенной на рисунке 1. Максимальный объем этой памяти определяется регистрами R0 и R1 и составляет 256 байт. Точно также как и в случае внешней памяти программ, объем внешней памяти данных может быть увеличен за счет использования портов P1 и P2 до 16 Мбайт.

Для обращения к внешней памяти данных используются команды:

MOVX A, @R0 или MOVX A, @R1 (команды чтения)

MOVX @R0, A MOVX @R1, A (команды записи)

Рисунок 3. Адресное пространство внешней памяти данных.

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

Внутренняя память данных микроконтроллеров MCS-48

Внутренняя память данных (RAM) предназначена для временного хранения информации, используемой в процессе выполнения программы. Адресное пространство внутренней памяти данных представляет собой 256 восьмиразрядных ячеек, с адресами от 000h до 0FFh. Для микроконтроллеров 8048, 8035, КР1816ВЕ35, КР1816ВЕ48 из них доступно только 64 ячейки памяти.  Для микроконтроллеров 8049, КР1816ВЕ49 из них доступно 128 ячеек памяти. И только для микроконтроллеров 1850ВЕ49 доступны все 256 ячеек внутренней памяти данных. Распределение адресного пространства памяти данных микроконтроллеров серии MCS-48 приведено на рисунке 4.

Младшие 32 байта внутреннего ОЗУ данных объединены с 2мя банками регистров (RB0 - RB1) и восьмиуровневым стеком микроконтроллера. Банк регистров состоит из восьми восьмиразрядных регистров с именами R0, R1, …, R7. Два банка регистров служат для организации независимой работы основной программы и подпрограмм обслуживания прерываний. Переключение банков регистров производится при помощи особого бита BS регистра слова состояния программы PSW командами SEL RB0 и SEL RB1.

Команды программы могут обращаться к регистрам, используя их имена R0-R7 (MOV A, R0 или MOV R7, A), или используя их адрес во внутренней памяти данных (доступна только косвенно-регистровая адресация). Например:

MOV R0, #5
MOV A, @R0

или

MOV R0, #7
MOV @R0, A).

Рисунок 4. Адресное пространство внутренней памяти данных.

Следующие после второго банка регистров ячейки памяти образуют обычное ОЗУ

Ячейки внутренней памяти данных с адресами 8 - 23 представляют из себя аппаратный 8 - ми уровневый стек, где сохраняются адреса возвратов из подпрограмм. В составе системы команд отсутствуют команды сохранения регистров в стеке. То есть разработчик программы вынужден следить за использованием регистров во вложенных подпрограммах. Это, наряду с малой глубиной аппаратного стека, сильно ограничивает возможности по написанию программ для микроконтроллеров семейства MCS-48.


[ Назад] [ Содержание] [ Вперёд]