Лекция № 8
“ Организация системы памяти микроконтроллера 8xC51Fx.”
Все микроконтроллеры семейства MCS-51 имеют Гарвардскую архитектуру, т.е. раздельное адресное пространство программ и данных. Такое разделение позволяет осуществлять доступ к памяти данных по 8-битным адресам, что способствует более быстрой обработке данных в ЦП. Тем не менее, возможно использование и 16-битных адресов данных.
Программная память доступна исключительно по чтению. Общий объем ее адресного пространства составляет 64 Кбайта. В различных версиях кристаллов может присутствовать до 32 Кбайт внутренней памяти программ. При обращении к этим областям памяти используются циклы обмена по внутренней магистрали микроконтроллера. При необходимости можно расширить память программ за счет внешнего ПЗУ.
Карта памяти программ.
После сигнала RESET микроконтроллер начинает выполнение программы с адреса 0000h либо внешней либо внутренней памяти программ, в зависимости от состояния сигнала EA.
Память данных доступна как по чтению, так и по записи. Общий объем ее адресного пространства составляет 64 Кбайта. Адрес может иметь размер 1 или 2 байта. Однобайтная адресация часто используется при страничной организации ОЗУ.
Карта памяти данных.
Внутренняя память данных может быть разделена на три условных блока - нижний, верхний и пространство Регистров Специальных Функций (SFR).
Карта внутренней памяти данных.
Внутренняя память данных всегда адресуется байтом, что подразумевает 256 байт адресного пространства. Однако, фактически можно обращаться к 384-м байтам. Прямая адресация ячейки с адресом свыше 7Fh осуществляет доступ к области регистров специальных функций, а косвенная - к верхней области внутренней памяти данных. Т.о. эти две области занимают одно и то же адресное пространство, хотя и разделены физически. Все байты в нижней 128-байтной половине внутренней памяти данных могут адресоваться как прямо, так и косвенно.
Первые 32 байта в нижней области внутреннего ОЗУ сгруппированы в 4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0-R7. Два бита регистра PSW определяют, какой из банков используется в текущий момент. Это позволяет более эффективно использовать память программ, поскольку регистровые инструкции короче, чем прямая адресация. Переключение регистровых банков эффективно заменяет операции сохранения регистров в стеке на время обработки прерывания.
Следующие за регистровыми банками 16 байт образуют блок побитно адресуемого пространства. Набор инструкций MCS-51 содержит широкий набор операций над битами, а 128 бит (16 байт по 8) в этом блоке могут быть прямо адресованы. Битовые адреса имеют значения от 00h до 7Fh.
Карта нижней области внутреннего ОЗУ.
7Fh ... 30h |
Побайтно-адресуемая область внутреннего ОЗУ | |||||||
|
Побитно-адресуемая область внутреннего ОЗУ | |||||||
2Fh |
7Fh |
7Eh |
7Dh |
7Ch |
7Bh |
7Ah |
79h |
78h |
2Eh |
77h |
76h |
75h |
74h |
73h |
72h |
71h |
70h |
2Dh |
6Fh |
6Eh |
6Dh |
6Ch |
6Bh |
6Ah |
69h |
68h |
2Ch |
67h |
66h |
65h |
64h |
63h |
62h |
61h |
60h |
2Bh |
5Fh |
5Eh |
5Dh |
5Ch |
5Bh |
5Ah |
59h |
58h |
2Ah |
57h |
56h |
55h |
54h |
53h |
52h |
51h |
50h |
29h |
4Fh |
4Eh |
4Dh |
4Ch |
4Bh |
4Ah |
49h |
48h |
28h |
47h |
46h |
45h |
44h |
43h |
42h |
41h |
40h |
27h |
3Fh |
3Eh |
3Dh |
3Ch |
3Bh |
3Ah |
39h |
38h |
26h |
37h |
36h |
35h |
34h |
33h |
32h |
31h |
30h |
25h |
2Fh |
2Eh |
2Dh |
2Ch |
2Bh |
2Ah |
29h |
28h |
24h |
27h |
26h |
25h |
24h |
23h |
22h |
21h |
20h |
23h |
1Fh |
1Eh |
1Dh |
1Ch |
1Bh |
1Ah |
19h |
18h |
22h |
17h |
16h |
15h |
14h |
13h |
12h |
11h |
10h |
21h |
0Fh |
0Eh |
0Dh |
0Ch |
0Bh |
0Ah |
09h |
08h |
20h |
07h |
06h |
05h |
04h |
03h |
02h |
01h |
00h |
1Fh ... 18h |
Регистровый банк 3 | |||||||
17h ... 10h |
Регистровый банк 2 | |||||||
0Fh ... 08h |
Регистровый банк 1 | |||||||
07h ... 00h |
Регистровый банк 0 |
Для 16 адресов в пространстве SFR имеется возможность как битовой, так и байтовой адресации. Побитово-адресуемыми регистрами являются те, чей шестнадцатеричный адрес заканчивается на “0” или “8”. Битовые адреса в этой области располагаются со значения 80h по FFh.
Наиболее часто используемыми регистрами специальных функций являются:
- Аккумулятор (байтовый адрес 0E0h). Используется во всех арифметических и логических операциях в качестве операнда;
- Регистр B (байтовый адрес - 0F0h). Используется при операциях умножения и деления, а также как сверхоперативный регистр;
- Слово состояния программы PSW (байтовый адрес - 0D0h). Содержит информацию о состоянии программы;
- Указатель стека (байтовый адрес -081h). Используется для указания на вершину стека в операциях записи в стек и чтения из него. По аппаратному сбросу устанавливается в значение 07h (область стека в этом случае начинается с адреса 08h) и инкрементируется при каждой записи в стек. Запись в SP производится для предопределения положения стека во внутренней памяти данных микроконтроллера;
- Указатель данных DPTR (байтовые адреса 082h, 083h). Состоит из двух байт: старшего - DPH и младшего - DPL. Используется как 16-ти или 8-битовый указатель адреса при обращении к внешней памяти или выполнении команды перехода по косвенному адресу.
Слово состояния программы PSW.
Слово состояния программы PSW содержит ряд статусных битов, отражающих текущее состояние процессора.
Формат PSW.
PSW.7 |
PSW.6 |
PSW.5 |
PSW.4 |
PSW.3 |
PSW.2 |
PSW.1 |
PSW.0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
- |
P |
Назначение отдельных битов PSW.
Бит |
Назначение |
CY |
Флаг переноса. |
AC |
Флаг дополнительного переноса. |
F0 |
Флаг пользователя 0. |
RS1, RS0 |
Биты выбора используемого регистрового банка: 00 - банк 0; 01 - банк 1; 10 - банк 2; 11 - банк 3. |
OV |
Флаг переполнения. |
- |
Зарезервирован. Доступен по чтению и записи. |
P |
Флаг четности |
Бит переноса кроме арифметических, используется также и в булевых операциях. Биты RS0 и RS1 используются для выбора одного из 4-х регистровых банков. Бит четности отражает число установленных бит в аккумуляторе: P=1, если аккумулятор содержит нечетное число единиц, и P=0, если четное. Т.о., количество ненулевых битов в аккумуляторе плюс P является всегда четным числом. Два бита в PSW ни с чем не связаны и могут использоваться как флаги состояний.