Студопедия — Память данных
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Память данных






 

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

Внутренняя память данных состоит из двух областей: 128 байт оперативной памяти (ОЗУ) с адресами 00Н -7FH и области регистров специальных функций (РСФ), занимающей адреса 80Н - FFH. Физически внутреннее ОЗУ данных и область регистров специальных функций являются отдельными устройствами. Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием прямой и косвенной адресации с произвольным доступом.

Внутренняя память ОЗУ расположена на кристалле МК51 и состоит из регистра адреса ОЗУ, дешифратора, ОЗУ и указателя стека (рис.13).

 

Рис.13. Устройство памяти данных

 

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

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

Указатель стека SP представляет собой восьмиразрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. При выполнении команд LCALL, ACALL содержимое указателя стека увеличивается на 2. При выполнении команд RET, RETI содержимое указателя стека уменьшается на 2. При выполнении команды PUSH direct содержимое указателя стека увеличивается на 1. При выполнении команды POP direct содержимое указателя стека уменьшается на 1. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 08Н.

Объем внутренней памяти данных ОЗУ составляет 128 байт или 128 ячеек памяти с адресами от 00Н до 7FH. Структура памяти показана на рис. 14.

Рис.14. Структура памяти данных в ОЗУ

 

Как видно из рис.14, общее пространство памяти ОЗУ включает в себя пространство регистров общего назначения (РОН) и пространство прямоадресуемых бит.

Пространство регистров общего назначения (РОН). В качестве РОН используются первые 32 ячейки ОЗУ (адреса 00Н – 1FH). Они объединены по 8 ячеек в 4 группы (рис.15, а), которые называются банками регистров RB0, RB1, RB2, RB3 (R egister B anks). В каждом банке регистры имеют одинаковую нумерацию R0, R1, R2, R3, R4, R5, R6, R7. Поэтому в отдельный момент времени можно обращаться к регистрам только одного, заранее выбранного банка. Для выбора банка регистров используются биты RS1,RS0 регистра PSW (см. табл. 3).

 

 

Рис.15. Регистры оперативного обслуживания АЛУ МК51

 

Обращение к РОН производится с использованием регистровой адресации, когда в команде указывается не однобайтовый адрес ячейки в ОЗУ, а порядковый номер регистра от 0 до 7, который в двоичном виде имеет 3 разряда (от 000В до 111В). Наличие такого механизма работы с ячейками ОЗУ позволяет экономить память программ, т. к. команды, работающие с регистрами R0-R7, короче команд, использующих прямую адресацию. Кроме того, команды с регистровой адресацией выполняются быстрее, чем команды с прямой адресацией. При работе с аккумулятором регистровые команды выполняются за один машинный цикл и обычно используются как оперативные регистры АЛУ. Обозначение регистра является одновременно и символическим именем регистра в команде. Например:

- MOV R0, A – перемещение операнда из аккумулятора в регистр R0;

- ADD A, R3 – сложение операндов аккумулятора и регистра R3.

Регистры R0 и R1 в каждом банке регистров выполняют роль регистров-указателей данных при косвенной адресации памяти данных. Перед обращением к ячейке памяти в один из этих регистров заносится адрес ячейки.

Кроме РОН, в состав регистров оперативного обслуживания АЛУ входят другие программно-доступные регистры (рис.15, б):

- PC - 16-разрядный счетчик команд (Program Counter). Содержит адрес ячейки памяти программ, подлежащей чтению;

- DPTR - 16-разрядный указатель данных (D ata P oin t e r), состоящий из двух 8-разрядных регистров, содержащих старший (High) DPH и младший (Low) DPL байты;

- A - аккумулятор;

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

- PSW - регистр состояния программы (Program Status Word), содержащий признаки, формируемые аккумулятором;

- SP - указатель стека (S tack P ointer), содержащий адрес вершины стека.

Все эти регистры, кроме PC, расположены в области регистров специальных функций (РСФ). Регистр PC находится в центральном процессоре.

Пространство прямоадресуемых бит. Часть памяти данных с адресами 20Н – 2FH представляет собой так называемую битовую область ОЗУ. В ней имеется возможность при помощи специальных битовых команд адресоваться к каждому отдельному разряду ячеек памяти. Битовое пространство имеет объем 128 бит и занимает 16 ячеек памяти. Адрес прямоадресуемых битов может быть записан либо в виде (Адрес Байта).(Разряд), например выражение 21.3 означает третий разряд ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса. Соответствие этих двух способов адресации можно определить по табл. 5.

Пример использования адреса при обращении к одному и тому же биту:

- SETB 0BH - установить

бит с прямым адресом 0ВН;

- SETB 21.3H - установить

третий бит ячейки с адресом 21Н.

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

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

Второй способ — косвенная адресация с помощью регистров R0 или R1, перед выполнением соответствующей команды в один из них должен быть занесен адрес ячейки, к которой необходимо обратиться:

- MOV R0,30H - запись в регистр R0 адреса ячейки 30Н;

- SUBB A,@R0 - вычесть из аккумулятора содержимое ячейки памяти с косвенным адресом, расположенным в регистре R0.

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

Стековая память. Стековой называют память, доступ к которой организован по принципу: «последним записан – первым считан» (Last Input First Output – LIFO). Данный тип памяти необходим для организации вызова подпрограмм и обработки прерываний. Это особенно важно при выполнении процедур управления с помощью подпрограмм обслуживания прерываний, которые во многих случаях являются вложенными. При этих операциях содержимое программного счетчика и основных регистров сохраняется в стеке, а затем восстанавливается при возврате к основной программе. Правильное выполнение программы будет возможным, если извлечение адресов возврата из памяти будет строго обратным порядку их записи. Стек в МК может быть организован как аппаратно, так и программно. В МК51 стековая память рассматривается не как отдельное физическое устройство, а как особый способ хранения данных в ОЗУ. Организация работы стека в ОЗУ показана на рис.17.

 

Рис.17. Принцип работы стека в ОЗУ

 

При инициализации работы микроконтроллера устанавливается начальный адрес стека в ОЗУ, который записывается в регистр SP. Для записи данных в стек используются либо команды LCALL, ACALL, PUSH, либо автоматически при переходе к подпрограмме обслуживания одного из источников прерывания. При выполнении команд LCALL, ACALL либо по прерыванию в стек записываются два байта адреса возврата из подпрограммы в основную программу. При выполнении команды PUSH в стек программным способом записывается один байт данных, которые необходимо сохранять при переходе к подпрограмме. Обязательным считается сохранение аккумулятора А и регистра PSW.

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

Чтение данных из стека выполняется по командам RET, RETI, POP. При выполнении команд RET, RETI из стека извлекается двухбайтовый адрес возврата в основную программу и автоматически помещается в счетчик команд РС. При выполнении команды POP восстанавливается содержимое тех регистров, которое было записано в стек. При чтении байта из стека сначала выполняется чтение по адресу, на который указывает SP, а затем - декремент SP.

По умолчанию при включении микроконтроллера сигналом RST в регистр SP записывается адрес 07Н, а биты RS0,RS1 в регистре PSW сбрасываются. Таким образом, запись в стек начинается с адреса 08Н, находящегося выше нулевого банка РОН. При необходимости программным путем можно изменить расположение стека в ОЗУ, записав в регистр SP новое значение адреса.

 

Пространство регистров специальных функций (РСФ) занимает область памяти с адресами 80Н-FFH, что является продолжением адресного пространства памяти данных. Однако физически внутреннее ОЗУ данных и пространство регистров специальных функций РСФ (SFR - Special Function Register в английской транскрипции) являются отдельными устройствами. Адреса, по которым расположены эти регистры, приведены в табл.6. Отметим, что регистры занимают только часть 128 -байтового адресного пространства. Те ячейки памяти с адресами 80H-0FFH, которые не заняты регистрами, физически отсутствуют, на кристаллах микроконтроллеров семейства 8051 при обращении к ним можно прочитать лишь код команды возврата.

Регистры специальных функций (РСФ) управляют работой блоков, входящих в микроконтроллер (см. табл. 6):

- регистры-защелки параллельных портов P0...P3 - служат для ввода-вывода информации;

- две регистровые пары с именами TH0, TL0 и TH1, TL1 представляют собой регистры двух программно-управляемых 16-битных таймеров-счетчиков;

 

 

Таблица 6

Регистр Наименование Адрес
*ACC Аккумулятор 0E0H
* B Регистр-расширитель аккумулятора 0F0H
* PSW Слово состояния программы 0D0H
SP Регистр-указатель стека 81H
DPTR Регистр-указатель данных (DPH) (DPL) 83H
82H
* P0 Порт 0 80H
* P1 Порт 1 90H
* P2 Порт 2 0A0H
* P3 Порт 3 0B0H
* IP Регистр приоритетов 0B8H
* IE Регистр маски прерываний 0A8H
TMOD Регистр режима таймера/счетчика 89H
* TCON Регистр управления/статус таймера 88H
TH0 Таймер 0 (старший байт) 8CH
TL0 Таймер 0 (младший байт) 8AH
TH1 Таймер 1 (старший байт) 8DH
TL1 Таймер 1 (младший байт) 8BH
* SCON Регистр управления приемопередатчиком 98H
SBUF Буфер приемопередатчика 99H
PCON Регистр управления мощностью 87H
Примечание. Регистры, имена которых отмечены знаком (*), допускают адресацию отдельных бит.

 

- режимы таймеров-счетчиков задаются с использованием регистра TMOD, а управление ими осуществляется с помощью регистра TCON;

- для управления режимами энергопотребления микроЭВМ используется регистр PCON;

- регистры IP и IE управляют работой системы прерываний микроЭВМ;

- регистры SBUF и SCON — управляют работой приемопередатчика последовательного порта;

- регистр-указатель стека SP определяет степень заполнения стека;

 

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

- аккумулятор (АСС) является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета и т.п;

- регистр В используется как источник и как приемник при операциях умножения и деления, обращение к нему, как к регистру SFR, производится аналогично аккумулятору;

- регистр PSW формирует признаки операций — флаги, которые устанавливаются при выполнении ряда команд в арифметико - логическом устройстве (АЛУ).

Все регистры РСФ допускают только прямую адресацию. Адрес регистра может быть указан в виде его фактического значения либо в виде символического имени регистра.

Часть пространства регистров специальных функция может рассматриваться как битовое, поскольку большинство регистров SFR имеют битовый доступ. Адреса регистров и адреса битов приведены в табл. 7.

Адрес прямоадресуемых битов может быть записан либо в виде выражения (Регистр). (Разряд), например выражение SCON.3 означает адрес третьего разряда регистра SCON, либо в виде абсолютного битового адреса, который для данного бита равен (см. таблицу) 9BН. Кроме того, некоторые биты управляющих регистров имеют собственные символические имена, так например данный бит имеет название TB8.

При включении микроконтроллера или аппаратном сбросе (RST=1) в указатель стека SP записывается значение 07Н, триггеры всех разрядов параллельных портов устанавливаются в состояние 1, переводя все линии в режим «Чтение». Все используемые разряды остальных регистров устанавливаются в состояние 0, а состояние неиспользуемых (зарезервированных) разрядов и регистра SBUF не определено.

 

Внешняя память данных используется в тех случаях, когда недостаточно для работы внутренней памяти ОЗУ. В МК51 предусмотрена возможность расширения памяти данных путем подключения внешних устройств ОЗУ емкостью до 64 Кбайт. Для этой цели используется схема подключения микросхемы внешнего ОЗУ, используя альтернативные функции портов P0,P2 (рис.18).

 

Рис. 18. Схема подключения внешней микросхемы памяти данных

Для организации связи между микросхемой памяти ERAM и портами Р0 и Р2 необходим дополнительный 8-разрядный параллельный регистр RG. Порт Р0 при этом работает как мультиплексированная шина адрес/данные. Выдача младших разрядов адреса (А0...А7) и обмен данными осуществляются через порт Р0 (Р0.0...Р0.7). Старшие разряды адреса А8...А15 выдаются через порт Р2 (Р2.0...Р2.7). Внешняя шина адреса формируется на выходе регистра RG и порта Р2. В первой фазе команды через порт Р0 выдается младший байт адреса (А0...А7), который срезом сигнала ALE фиксируется во внешнем регистре RG.

В дальнейшем линии порта Р0 используются как шина данных, через которую байт данных принимается из памяти при чтении или выдается в память данных при записи. Во второй фазе команды стробирующими сигналами или производится либо чтение данных из внешнего ОЗУ (рис.19), либо запись данных в ОЗУ (рис.20).

 

 

Рис.19. Временная диаграмма формирования сигналов на

внешних шинах данных и адреса в режиме чтения

 

Обращение к внешней памяти данных возможно только с помощью команд MOVX. Команды с косвенной адресацией MOVX @Ri,A и MOVX A,@Ri формируют восьмиразрядный адрес, выдаваемый через порт Р0.

Команды MOVX @DPTR,A и MOVX @A,DPTR формируют 16-разрядный адрес, младший байт которого выдается через порт Р0, а старший - через порт Р2.

 

 

Рис.20. Временная диаграмма формирования сигналов на

внешних шинах данных и адреса в режиме записи

 

В первом случае возможна работа с внешним ОЗУ емкостью 256 байт. Во втором случае – емкостью от 256 байт до 64 Кбайт. Кроме того, существует возможность увеличения объема внешней памяти с использованием команд MOVX @Ri,A и MOVX A,@Ri(например до 2 Кбайт). Для этого три линии порта Р2 (Р2.0, Р2.1, Р2.2) независимо от команд MOVX «листают страницы» внешнего ОЗУ, объем каждой страницы при этом 256 байт. Это так называемая страничная организация работы внешнего ОЗУ.







Дата добавления: 2015-08-12; просмотров: 2718. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

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

Решение Постоянные издержки (FC) не зависят от изменения объёма производства, существуют постоянно...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия