Объем расположенной на кристалле памяти данных—128 байт. Объем внешней памяти данных может достигать 64 Кбайт. Первые 32 байта организованы в четыре банка регистров общего назначения, обозначаемых соответственно банк 0 — банк 3. Каждый из них состоит из восьми регистров R0 — R7. В любой момент программе доступен только один банк регистров, номер которого содержится в третьем и четвертом битах слова состояния программы PSW (см. ниже).
Оставшееся адресное пространство может конфигурироваться разработчиком по своему усмотрению: в нем располагаются стек, системные и пользовательские области данных. Обращение к ячейкам памяти данных возможно двумя способами. Первый способ — прямая адресация ячейки памяти. В этом случае адрес ячейки является операндом соответствующей команды. Второй способ — косвенная адресация с помощью регистров R0 или R1: перед выполнением соответствующей команды в один из них должен быть занесен адрес ячейки, к которой необходимо обратиться.
Для обращения к внешней памяти данных используется только косвенная адресация с помощью регистров R0 и R1 или с помощью 16-разрядного регистра-указателя DPTR. Он относится к группе регистров специальных функций, и с его помощью можно адресовать все 64 Кбайта внешней памяти.
Часть памяти данных представляет собой так называемую битовую область, в ней имеется возможность при помощи специальных битовых команд адресовываться к каждому разряду ячеек памяти. Адрес прямо адресуемых битов может быть записан либо в виде (Адрес Байта ).(Разряд), например выражение 21.3 означает третий разряд ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса. Соответствие этих двух способов адресации можно определить по таблице.
Таблица 1 – Адреса битовых областей памяти микроконтроллера 8051
Адрес байта | Адреса битов по разрядам | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
2FH | 7F | 7E | 7D | 7C | 7B | 7A | 79 | 78 |
2EH | 77 | 76 | 75 | 74 | 73 | 72 | 71 | 70 |
2DH | 6F | 6E | 6D | 6C | 6B | 6A | 69 | 68 |
2CH | 67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 |
2BH | 5F | 5E | 5D | 5C | 5B | 5A | 59 | 58 |
2AH | 57 | 56 | 55 | 54 | 53 | 52 | 51 | 50 |
29H | 4F | 4E | 4D | 4C | 4B | 4A | 49 | 48 |
28H | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 |
27H | 3F | 3E | 3D | 3C | 3B | 3A | 39 | 38 |
26H | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30 |
25H | 2F | 2E | 2D | 2C | 2B | 2A | 29 | 28 |
24H | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
23H | 1F | 1E | 1D | 1C | 1B | 1A | 19 | 18 |
22H | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 |
21H | 0F | 0E | 0D | 0C | 0B | 0A | 09 | 08 |
20H | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
Примечание. Адрес прямо адресуемых битов может быть записан либо в виде выражения (Адрес Байта ).(Разряд), например выражение 21.3 означает адрес третьего разряда ячейки памяти с адресом 21H, либо в виде абсолютного битового адреса, который для данного бита равен (см. таблицу) 0B.
Таблица 2 – Карта адресуемых битов в блоке регистров специальных функций.
Адрес байта | Адреса битов по разрядам | Имя регистра | |||||||
Adr | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | Name |
F0H | F7 | F6 | F5 | F4 | F3 | F2 | F1 | F0 | B |
... | . . . | ... | |||||||
E0H | E7 | E6 | E5 | E4 | E3 | E2 | E1 | E0 | ACC |
... | . . . | ... | |||||||
D0H | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | PSW |
... | . . . | ... | |||||||
B8H | - | - | - | BC | BB | BA | B9 | B8 | IP |
... | . . . | ... | |||||||
B0 | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 | P3 |
... | . . . | ... | |||||||
A8H | AF | - | - | AC | AB | AA | A9 | A8 | IE |
... | . . . | ... | |||||||
A0H | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | P2 |
... | . . . | ... | |||||||
98H | 9F | 9E | 9D | 9C | 9B | 9A | 99 | 98 | SCON |
... | . . . | ... | |||||||
90H | 97 | 96 | 95 | 94 | 93 | 92 | 91 | 90 | P1 |
... | . . . | ... | |||||||
88H | 8F | 8E | 8D | 8C | 8B | 8A | 89 | 88 | TCON |
... | . . . | ... | |||||||
80H | 87 | 86 | 85 | 84 | 83 | 82 | 81 | 80 | P0 |
Примечание. Адрес прямо адресуемых битов может быть записан либо в виде выражения (Название Регистра). (Разряд), например выражение SCON.3 означает адрес третьего разряда регистра SCON, либо в виде абсолютного битового адреса, который для данного бита равен (см. таблицу) 9B. Кроме того, некоторые биты управляющих регистров имеют собственные названия, так например данный бит имеет название TB8
К адресному пространству памяти данных примыкает адресное пространство регистров специальных функций SFR (SpecialFunctionRegister).
Таблица 3 – Размещение регистров специальных функций в пространстве SFR
Адрес | Символ | Наименование |
0E0H | *АСС | Аккумулятор (Accumulator) |
0F0H | *В | Регистр расширитель аккумулятора (MultiplicationRegister) |
0D0H | *PSW | Слово состояния программы (ProgramStatusWord) |
080Н | *P0 | Порт 0 (SFR P0) |
090H | *Р1 | Порт 1 (SFR P1) |
0A0H | *P2 | Порт 2 (SFR P2) |
0B0H | *P3 | Порт 3 (SFR РЗ) |
081H | SP | Регистр указатель стека (StackPointer) |
083H | DPH | Старший байт регистра указателя данных DPTR (DataPointerHigh) |
082H | DPL | Младший байт регистра указателя данных DPTR (DataPointerLow) |
08CH | TH0 | Старший байт таймера 0 () |
08AH | TL0 | Младший байт таймера 0 () |
08DH | TH1 | Старший байт таймера 1 () |
08BH | TL1 | Младший байт таймера 1 () |
089H | TMOD | Регистррежимовтаймеровсчетчиков (Timer/Counter Mode Control Register) |
088H | *TCON | Региструправлениястатусатаймеров (Timer/Counter Control Register) |
0B8H | *IP | Регистрприоритетов (Interrupt Priority Control Register) |
0A8H | *IE | Регистрмаскипрерывания (Interrupt Enable Register) |
087H | PCON | Регистр управления мощностью (PowerControlRegister) |
098H | *SCON | Региструправленияприемопередатчиком (Serial Port Control Register) |
099H | SBUF | Буферприемопередатчика (Serial Data Buffer) |
Примечание. Регистры, символ которых отмечен знаком (*), допускают адресацию своих отдельных бит при использовании команд из группы команд операций над битами.
Адреса, по которым расположены эти регистры, приведены в таблице.
Отметим, что регистры занимают только часть 128-байтового адресного пространства. Те ячейки памяти с адресами 80H-0FFH, которые не заняты регистрами, физически отсутствуют, на кристаллах микроконтроллеров семейства 8051 при обращении к ним можно прочитать лишь код команды возврата.
Регистры специальных функций управляют работой блоков, входящих в микроконтроллер.
– Регистры-защелки SFR параллельных портов P0...P3 - служат для ввода-вывода информации.
– Две регистровые пары с именами TH0, TL0 и TH1, TL1 представляют собой регистры, двух программно-управляемых 16-битных таймеров-счетчиков.
– Режимы таймеров-счетчиков задаются с использованием регистра TMOD, а управление ими осуществляется с помощью регистра TCON.
– Для управления режимами энергопотребления микро-ЭВМ используется регистр PCON.
– Регистры IP и IE управляют работой системы прерываний микро-ЭВМ,
– Регистры SBUF и SCON — работой приемопередатчика последовательного порта.
– Регистр-указатель стека SP в микро-ЭВМ рассматриваемого семейства — восьми битный. Он может адресовать любую область внутренней памяти данных. В отличие от микропроцессора КР580ВМ80, у микро-ЭВМ семейства 8051 стек «растет вверх», т.е. перед выполнением команды PUSH или CALL содержимое SP инкрементируется, после чего производится запись информации в стек. Соответственно при извлечении информации из стека регистр SP декрементируется после извлечения информации. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.
– Регистр-указатель данных DPTR чаще всего используют для фиксации 16-битного адреса в операциях обращения к внешней памяти программ и данных. С точки зрения программиста он может выступать как в виде одного 16-битного регистра, так и в виде двух независимых регистров DPL и DPH
– Аккумулятор (АСС) является источником операнда и местом фиксации результата при выполнении арифметических, логических операций и ряда операций передачи данных. Кроме того, только с использованием аккумулятора могут быть выполнены операции сдвигов, проверка на нуль, формирование флага паритета и т.п. В распоряжении пользователя имеются 8 регистров общего назначения R0–R7 одного из четырёх возможных банков. При выполнении многих команд в АЛУ формируется ряд признаков операции (флагов), которые фиксируются в регистре PSW.