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

Память данных, расположенная на кристалле (внутренняя память данных), имеет объем 256 байт. Она может быть расширена до 64К байт за счет подключения блоков внешней памяти данных.

Внутренняя память данных состоит из двух областей: 128 байт опе­ративной памяти (ОЗУ) с адресами 00h-7Fh и области регистров специальных функций, занимающей адреса 80h-FFh. Помимо возможности использования ОЗУ в качестве массива оперативной памяти, отдельные её области име­ют самостоятельное значение. Часть ОЗУ используется в ка­честве регистров общего назначения, часть имеет прямо­адресуемый доступ к отдельным битам, образуя так называ­е­мую битовую память. В ОЗУ располагается также и область стека. Распределение адресного пространства ОЗУ показано на рис.2.

Младшие 32 байта внутреннего ОЗУ данных сгруппированы в 4 банка по 8 регистров общего назначения в каждом (БАНК 0 - БАНК 3). Определение рабочего в данный момент банка, то есть банка регистров, к которому обращается программа при использовании имен R0 - R7, осуществляется установкой битов RS0 и RS1 в регистре слова состояния PSW. Начальное состояние этих разрядов после прохождения сигнала сброса RESET определяет в качестве рабочего БАНК0 (RS0 = RS1 =0). Наличие нескольких банков регистров сокращает длину команд, а также уменьшает время, необходимое для сохранения и восстановления регистров при работе с подпрограммами и обработчиками прерываний, что характерно для структуры задач, решаемых микроконтроллерами.

ОЗУ данных с адресами 20h - 2Fh образует область ячеек, к которым возможен побитный доступ. Система команд МК-51 содержит значительное количество инструкций, поз­во­­ляющих работать с отдельными битами, используя при этом прямую адресацию. 128 бит, составляющие рас­сматриваемую область внутреннего ОЗУ данных, имеют адреса 00h - 7Fh и предназначены для работы с такими инструкциями. Битовая адресация данного массива ОЗУ показана на рис.3. Таким образом, к ячейке с адресом, например, 21h можно обратиться как к байту, используя её прямой адрес 21h, а можно обратиться к её отдельным битам с помощью команд, работающих с битовой информацией. При этом младший бит этого байта имеет адрес 08h, а старший - 0Fh.

Область регистров специальных функций содержит регистры-защёлки портов, регистры таймеров/счетчиков, регистры управления и т.п. Полный список регистров специальных функций с их адресами приведен в таблице 2. Эти регистры допускают только прямую адресацию. Регистры, адреса которых кратны восьми, то есть заканчиваются на 000 b, допускают как байтовую, так и побитовую адресацию. Список регистров с указанием адресов их бит показан на рис.4.

Адрес байта Адрес бита
               
2Fh 7F 7E 7D 7C 7B 7A    
2Eh                
2Dh 6F 6E 6D 6C 6B 6A    
2Ch                
2Bh 5F 5E 5D 5C 5B 5A    
2Ah                
29h 4F 4E 4D 4C 4B 4A    
28h                
27h 3F 3E 3D 3C 3B 3A    
26h                
25h 2F 2E 2D 2C 2B 2A    
24h                
23h 1F 1E 1D 1C 1B 1A    
22h                
21h 0F 0E 0D 0C 0B 0A    
20h                

Рис.3. Битовая память МК-51

Во внутреннем ОЗУ данных размещается также область сте­ка. Её положение не фиксировано, а определяется значением указателя стека SP. Начальное значение SP после сис­темного сброса - 07h. SP указывает на верхнюю занятую ячейку стека. При обращении к стеку на запись сначала значение SP увеличивается на 1, а затем производится запись во внутреннюю память данных по адресу, хранящемуся в SP. Считывание из стека произодится по ад­ресу, хранящему­ся в SP, после чего значение SP уменьшается на 1.

Адрес байта Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0 Обозначение
F0h F7h F6h F5h F4h F3h F2h F1h F0h B
 
E0h E7h E6h E5h E4h E3h E2h E1h E0h ACC
 
  CY AC F0 RS1 RS0 OV   P  
D0h D7h D6h D5h D4h D3h D2h D1h D0h PSW
 
        PS PT1 PX1 PT0 PX0  
B8h       BC BBh BAh B9h B8h IP
 
  RD WR T1 T0 INT1 INT0 TxD RxD  
B0h B7h B6h B5h B4h B3h B2h B1h B0h P3
 
  EA     ES ET1 EX1 ET0 EX0  
A8h AFh     ACh ABh AAh A9h A8h IE
 
A0h A7h A6h A5h A4h A3h A2h A1h A0h P2
 
  SM0 SM1 SM2 REN TB8 RB8 TI RI  
98h 9Fh 9Eh 9Dh 9Ch 9Bh 9Ah 99h 98h SCON
 
90h 97h 96h 95h 94h 93h 92h 91h 90h P1
 
  TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0  
88h 8Fh 8Eh 8Dh 8Ch 8Bh 8Ah 89h 88h TCON
 
80h 87h 86h 85h 84h 83h 82h 81h 80h P0

Рис.4. Регистры, допускающие побитовый доступ


Таблица 2

Регистры специальных функций

Обозначение   Наименование   Адрес Состоя­ние после начального сброса
ACC B PSW SP DPTR DPL DPH P0 P1 P2 P3 IP IE TMOD TCON TH0 TL0 TH1 TL1 SCON SBUF PCON Аккумулятор Регистр В Регистр состояния программы Указатель стека Указатель данных, 2 байта младший байт старший байт Порт 0 Порт 1 Порт 2 Порт 3 Регистр приоритетов прерываний Регистр разрешения прерываний Регистр режимов таймера/счетчика Регистр управления таймера/счетчика Таймер/счетчик 0. Старший байт Таймер/счетчик 0. Младший байт Таймер/счетчик 1. Старший байт Таймер/счетчик 1. Младший байт Управление последовательным портом Буфер последовательного порта Управление потреблением E0h F0h D0h 81h 82h 83h 80h 90h A0h B0h B8h A8h 89h 88h 8Ch 8Ah 8Dh 8Bh 98h 99h 87h 00h 00h 00h 07h 0000h 00h 00h FFh FFh FFh FFh xxx00000b 0xx00000b 00h 00h 00h 00h 00h 00h 00h xxxxxxxxb 0xxxxxxxb

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

К внешней памяти данных можно обращаться только на запись или чтение с помощью специальных команд MOVX. Эти команды осуществляют обмен информацией между внешней памятью данных и аккумулятором микроконтроллера и не влияют на внутреннюю память данных МК. Таким образом, в системе могут одновременно присутствовать внутренняя память данных с адресами 00h - 0Fh и внешняя память данных с адресами 0000h - FFFFh.

Память программ

В зависимости от модификации, различные типы БИС МК-51 имеют разное распределение внутренней и внешней памяти программ (см. табл.1), оставляя неизменным максимально допустимый общий её объем в 64К байт. Память программ адресуется с по­мощью 16-разрядной адресной шины с использованием счетчика команд (PC) или инструкций, которые вырабатывают 16-разрядные адреса. Она имеет байтовую организацию и доступна только по чте­нию.

Обращение к внутренней или внешней памяти программ происходит автоматически с использованием аппаратных средств МК. При этом в зависимости от состояния управляющего входа DEMA микроконтроллера вся память трактуется либо как только внешняя (при DEMA =0), либо как внутренняя, занимающая младшие адреса адресного пространства, и внешняя, занимающая адреса от старшего адреса внутренней памяти до максимально допустимого FFFFh (рис.5). С точки зрения программиста имеется только один массив памяти программ объемом 64К байт.




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: