Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

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

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

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

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

MOV A, 80h;Скопировать сигналы с внешних выводов порта P0 в
;аккумулятор

 

MOV R0, #80h;Скопировать в аккумулятор содержимое

MOV A, @R0;ячейки внутреннего ОЗУ с адресом 80h

 

Десятичный адрес ячейки   Шестнадцатеричный адрес ячейки
  Регистры специальных функций SFR (прямая адресация) ОЗУ (косвенная адресация) FFh
   
  80h
    7Fh  
  ОЗУ (прямая и косвенная адресация)    
    30h  
                  2Fh  
  Битовое пространство    
                  20h  
  R7''' 1Fh  
  RB3 (PSW=18h)    
  R0''' 18h  
  R7'' 17h  
  RB2 (PSW=10h)    
  R0'' 10h  
  R7' 0Fh  
  RB1 (PSW=08h)    
  R0' 08h  
  R7 07h  
  RB0 (PSW=00h)    
  R0 00h  
                         

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

Регистры общего назначения позволяют писать самые эффективные программы. У микроконтроллеров семейства MCS-51 для программирования доступны восемь регистров. Более того, в этом семействе микроконтроллеров есть четыре набора (банка) регистров с именами RB0 - RB3. Для сравнения такие мощные процессоры как «электроника-79» и SPARC обладают всего двумя наборами регистров. Банк регистров состоит из восьми 8-разрядных регистров с именами R0, R1, …, R7. Несколько банков регистров служат для организации независимой работы нескольких параллельно выполняемых программных потоков. Переключение банков регистров производится при помощи двух особых битов регистра слова состояния программы PSW (биты RS0 и RS1). Если организация нескольких параллельных потоков обработки данных не нужна, то можно пользоваться только нулевым банком регистров, включающимся автоматически после подачи питания и сброса микроконтроллера, остальные ячейки памяти использовать как обычное ОЗУ.

Все четыре банка регистров объединены с 32 младшими байтами внутреннего ОЗУ данных (см. рис. 20.12). Так как физически регистры и ячейки внутреннего ОЗУ объединены, то команды программы могут обращаться к регистрам используя или их имена 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 записана логическая единица, то перейти

;по адресу Metka

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

В битовой области сосредоточено только 128 флагов. Битовая адресация возможна также в области регистров специальных функций.(см. табл. 20.4) Наиболее яркий пример использования битовой адресации в данной области — это обращение к отдельным выводам параллельных портов:

CPL 92;Проинвертировать второй бит порта P1

Выше адреса 128 (080h) располагаются регистры специальных функций, которые будут рассмотрены позже. Некоторые из регистров специальных функций допускают битовую адресацию к каждому из восьми своих битов. Оставшаяся область внутренней памяти данных используется как обычное ОЗУ, без особенностей.

Следует отметить, что в современных микроконтроллерах данного семейства эту память следует рассматривать как встроенные 256 регистров сверхоперативного ОЗУ. Основной памятью постепенно становится внутренняя память микроконтроллера, доступная при помощи команд MOVX @DPTR, A.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 558; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.21.101 (0.007 с.)