Курс лекций - Микропроцессоры

предназначена для временного хранения информации,


Внешняя память данных предназначена для временного хранения информации, используемой в процессе выполнения программы. Эта память физически должна быть подключена к микросхеме микроконтроллера при помощи схемы, изображенной на рисунке 1. Максимальный объем этой памяти определяется регистром DPTR и составляет 64 Кбайта. Точно также как и в случае внешней памяти программ, объем внешней памяти данных может быть увеличен за счет использования портов P1 и P3 до 1 Гбайта. Внешняя память данных для своей работы требует использование портов P0, P2 и P3. Это приводит к увеличению габаритов устройства, увеличению уровня помех и, в конечном итоге, увеличения стоимости устройства в целом. Поэтому в современных устройствах внешняя память не используется. Однако, в некоторых микроконтроллерах (например 87с550 фирмы DALLAS) команды обращения к внешней памяти используются для работы с дополнительной внутренней памятью большого объема.

Для обращения к внешней памяти данных используются команды MOVX A, @DPTR (команда чтения) и

MOVX @DPTR, A (команда записи)
Иногда для того, чтобы сохранить порт P2  в качестве порта общего использования, для обращения к памяти данных используются команды MOVX A, @R0 или MOVX A, @R0 (команды чтения)

MOVX@R0, A MOVX@R0, A (команды записи)
Рисунок 3. Адресное пространство внешней памяти данных.



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



Несмотря на то, что это самое маленькое адресное пространство из рассматриваемых, оно устроено наиболее сложным образом. Распределение памяти данных микроконтроллеров серии MCS-51 приведено на рисунке 4.



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

Внутреннее ОЗУ данных предназначено для временного хранения информации, используемой в процессе выполнения программы, и занимает 128 младших байт, с адресами от 000h до 07Fh для микроконтроллеров 8051, 8031, КР1816ВЕ31, КР1816ВЕ51, КР1816ВЕ751 КР1830ВЕ31, КР1830ВЕ51, КР1830ВЕ751 или 256 восьмиразрядных ячеек, с адресами от 000h до 0FFh для всех остальных микроконтроллеров семейства.

занимают адреса внутренней памяти данных с 080h по 0FFh. Так как адреса регистров специальных функций совпадают со старшими адресами внутреннего ОЗУ данных, то имеются особенности при использовании этих адресов внутренней памяти данных.

Система команд микроконтроллера позволяет обращаться к ячейкам внутренней памяти данных при помощи и адресации. При обращении к ячейкам памяти с адресами 0-127 использование любого из этих видов адресации будет производить выборку одной и той же ячейки памяти. При обращении к ячейкам ОЗУ с адресами 128-256 следует воспользоваться . Учитывая, что работа со стеком ведётся при помощи косвенной адресации, то имеет смысл размещать в этой области памяти . Если же требуется обратиться к , то нужно использовать . Например:

MOV A, 80h ;Скопировать сигналы с внешних ножек порта P0 в аккумулятор MOV R0, #80h ;Скопировать в аккумулятор содержимое MOV A, @R0 ;ячейки внутреннего ОЗУ с адресом 80h Регистры общего назначения позволяют писать самые эффективные программы. У микроконтроллеров семейства MCS-51 программирующему инженеру доступны восемь регистров. Более того, в этом семействе микроконтроллеров есть целых четыре набора (банка) регистров с именами RB0 - RB3. Банк регистров состоит из восьми восьмиразрядных регистров с именами R0, R1, …, R7.  Несколько банков регистров служат для организации независимой работы нескольких параллельно выполняемых программ.


Переключение банков регистров производится при помощи двух особых бит регистра слова состояния программы PSW (RS0 и RS1). Если организация нескольких параллельных потоков обработки данных не нужна, то можно пользоваться только нулевым банком регистров, включающимся автоматически после включения питания и сброса микроконтроллера, остальные ячейки памяти использовать как обычное ОЗУ.

Все четыре банка регистров объединены с 32 младшими байтами внутреннего ОЗУ данных (см. рисунок 4). Так как физически регистры и ячейки внутреннего ОЗУ объединены, то команды программы могут обращаться к регистрам, используя их имена R0-R7 ( ):

MOV A, R0 ;Скопировать содержимое регистра R0 в аккумулятор MOV R7, A ;Скопировать содержимое регистра R7 в аккумулятор или используя их адрес во внутренней памяти данных ( ):

MOV A, 0 ;Скопировать содержимое нулевой ячейки ОЗУ в аккумулятор MOV 7, A ;Скопировать содержимое аккумулятора в седьмую ячейку ОЗУ Следующие после банков регистров внутреннего ОЗУ данных 16 ячеек памяти (адреса 20Н-2FH) образуют область памяти, к которой возможна как байтовая, так и битовая адресация. В этих ячейках располагаются 128 программных флагов (битовых ячеек памяти). Обращение к отдельным битам этих ячеек возможно по их битовым адресам. Например команды:

SETB 15 ;Запомнить в 15 флаге логическую единицу JB 15, Metka ;Если в 15 флаге записана логическая единица, то перейти на метку обращаются к 15 флагу, расположенному в старшем бите байтовой ячейки памяти 21h. Использование однобитовых ячеек памяти позволяет сократить необходимый для работы программы объём памяти данных, так как для хранения битовых переменных выделяется один бит в памяти данных, а не машинное слово, как это делается в универсальных микропроцессорах (компьютерах).

В битовой области сосредоточено только 128 флагов. Оставшиеся адреса в битовом пространстве используются для битовой адресации в области регистров специальных функций. Наиболее яркий пример использования битовой адресации в области регистров специальных функций - это обращение к отдельным ножкам параллельных портов:

CPL 92 ;Проинвертировать второй бит порта P1 Оставшаяся область памяти используется как обычное ОЗУ без особенностей. Хотя, надо отметить, что в современных микроконтроллерах эту память следует рассматривать как встроенные 256 регистров сверхоперативного ОЗУ. Основной памятью постепенно становится внутренняя память, доступная при помощи команд MOVX @DPTR, A


Содержание раздела