оглавление назад далее

Лекция № 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 ни с чем не связаны и могут использоваться как флаги состояний.

оглавление назад далее