Встроенные системы - банк регистров / стек

В микроконтроллере 8051 всего 128 байт ОЗУ. Мы обсудим распределение этих 128 байтов ОЗУ и рассмотрим их использование в качестве стека и регистра.

Распределение пространства памяти RAM в 8051

128 байтам ОЗУ внутри 8051 присвоены адреса от 00 до 7FH. К ним можно получить доступ напрямую как к ячейкам памяти, и они разделены на три разные группы следующим образом:

  • 32 байта от 00H до 1FH отведены для банков регистров и стека.

  • 16 байтов от 20H до 2FH отведены для памяти чтения / записи с битовой адресацией.

  • 80 байтов от 30H до 7FH используются для хранения чтения и записи; это называетсяscratch pad. Эти 80 ячеек RAM широко используются 8051 программистом для хранения данных и параметров.

Зарегистрировать банки в 8051

Для банков регистров и стека отведено 32 байта ОЗУ. Эти 32 байта разделены на четыре банка регистров, каждый из которых имеет 8 регистров, R0 – R7. Ячейки RAM от 0 до 7 зарезервированы для банка 0 R0 – R7, где R0 - это ячейка RAM 0, R1 - ячейка RAM 1, R2 - ячейка 2 и так далее, пока ячейка памяти 7, которая принадлежит R7 банка 0.

Второй банк регистров R0 – R7 начинается с ячейки 08 ОЗУ и переходит в ячейки OFH. Третий банк R0 – R7 начинается с ячейки памяти 10H и переходит в ячейку 17H. Наконец, ячейки ОЗУ с 18H по 1FH зарезервированы для четвертого банка R0 – R7.

Банк реестра по умолчанию

Если ячейки ОЗУ 00–1F выделены для четырех банков регистров, к какому банку регистров R0 – R7 у нас будет доступ при включении питания 8051? Ответ - регистровый банк 0; то есть доступ к ячейкам ОЗУ от 0 до 7 осуществляется по именам от R0 до R7 при программировании 8051. Потому что гораздо проще ссылаться на эти ячейки ОЗУ по именам, например от R0 до R7, а не по их ячейкам памяти.

Как сменить регистрационный банк

Банк регистров 0 используется по умолчанию при включении 8051. Переключиться на другие банки можно с помощью регистра PSW. Биты D4 и D3 PSW используются для выбора желаемого банка регистров, поскольку к ним можно получить доступ с помощью команд с битовой адресацией SETB и CLR. Например, «SETB PSW.3» установит PSW.3 = 1 и выберет регистр банка 1.

RS1 RS2 Выбран банк
0 0 Банк0
0 1 Банк1
1 0 Банк2
1 1 Банк3

Стек и его операции

Стек в 8051

Стек - это часть ОЗУ, используемая ЦП для временного хранения информации, такой как данные или адрес памяти. ЦП нуждается в этой области хранения, учитывая ограниченное количество регистров.

Как осуществляется доступ к стекам

Поскольку стек является частью ОЗУ, внутри ЦП есть регистры, указывающие на него. Регистр, используемый для доступа к стеку, известен как регистр указателя стека. Указатель стека в 8051 имеет ширину 8 бит и может принимать значение от 00 до FFH. Когда 8051 инициализируется, регистр SP содержит значение 07H. Это означает, что ячейка ОЗУ 08 является первой ячейкой, используемой для стека. Операция сохранения регистра ЦП в стеке известна какPUSH, а получение содержимого из стека обратно в регистр ЦП называется POP.

Попадание в стек

В 8051 указатель стека (SP) указывает на последнее использованное место стека. Когда данные помещаются в стек, указатель стека (SP) увеличивается на 1. Когда выполняется PUSH, содержимое регистра сохраняется в стеке, а SP увеличивается на 1. Чтобы поместить регистры в стек, мы должны использовать свои адреса RAM. Например, инструкция «PUSH 1» помещает регистр R1 в стек.

Выскакивание из стопки

Выталкивание содержимого стека обратно в данный регистр противоположно процессу выталкивания. При каждой операции выталкивания верхний байт стека копируется в регистр, указанный инструкцией, и указатель стека уменьшается один раз.