Микроконтроллер 8051 имеет 128 байтов оперативной памяти. Мы обсудим распределение этих 128 байтов ОЗУ и рассмотрим их использование в качестве стека и регистра.
Распределение ОЗУ в 8051
128 байтам оперативной памяти внутри 8051 присвоен адрес от 00 до 7FH. К ним можно обращаться непосредственно как к ячейкам памяти, и они делятся на три группы следующим образом:
-
32 байта от 00H до 1FH расположены отдельно для банков регистров и стека.
-
16 байтов от 20H до 2FH отведены для памяти чтения / записи с адресацией по битам.
-
80 байтов от 30H до 7FH используются для чтения и записи; это называется блокнотом . Эти 80 мест оперативной памяти широко используются для хранения данных и параметров 8051 программистами.
32 байта от 00H до 1FH расположены отдельно для банков регистров и стека.
16 байтов от 20H до 2FH отведены для памяти чтения / записи с адресацией по битам.
80 байтов от 30H до 7FH используются для чтения и записи; это называется блокнотом . Эти 80 мест оперативной памяти широко используются для хранения данных и параметров 8051 программистами.
Регистрация банков в 8051 году
Всего 32 байта оперативной памяти отведено для банков регистров и стека. Эти 32 байта разделены на четыре банка регистров, в которых каждый банк имеет 8 регистров, R0 – R7. Места ОЗУ от 0 до 7 отведены для банка 0 R0-R7, где R0 — это место в ОЗУ 0, R1 — это место в ОЗУ 1, R2 — это место 2 и т. Д., До тех пор, пока место в памяти 7, которое принадлежит R7 банка 0.
Второй банк регистров R0 – R7 начинается в ячейке ОЗУ 08 и направляется в ячейки OFH. Третий банк R0 – R7 начинается в ячейке памяти 10H и идет в ячейку до 17H. Наконец, места RAM от 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 | Bank0 |
0 | 1 | Bank1 |
1 | 0 | Bank2 |
1 | 1 | Bank3 |
Стек и его операции
Стек в 8051
Стек является частью оперативной памяти, используемой ЦП для временного хранения такой информации, как данные или адрес памяти. ЦП нуждается в этой области памяти, учитывая ограниченное количество регистров.
Как стеки доступны
Поскольку стек является частью ОЗУ, внутри ЦП есть регистры, указывающие на него. Регистр, используемый для доступа к стеку, известен как регистр указателя стека. Указатель стека в 8051 имеет ширину 8 бит и может принимать значение от 00 до FFH. Когда 8051 инициализируется, регистр SP содержит значение 07H. Это означает, что местоположение 08 ОЗУ является первым местоположением, используемым для стека. Операция сохранения регистра ЦП в стеке называется PUSH , а получение содержимого из стека обратно в регистр ЦП называется POP .
Толкаем в стек
В 8051 указатель стека (SP) указывает на последнее использованное местоположение стека. Когда данные помещаются в стек, указатель стека (SP) увеличивается на 1. Когда выполняется PUSH, содержимое регистра сохраняется в стеке, а SP увеличивается на 1. Чтобы поместить регистры в стек, мы должны использовать их адреса RAM. Например, инструкция «PUSH 1» помещает регистр R1 в стек.
Выскакивают из стека
Выгрузка содержимого стека обратно в заданный регистр противоположна процессу нажатия. При каждой операции pop верхний байт стека копируется в регистр, указанный инструкцией, и указатель стека уменьшается один раз.