Банки регистров и распределение памяти стека в микроконтроллере 8051

Попробуйте наш инструмент устранения неполадок





Набор регистров общего назначения (R0-R7) называется банками регистров, которые принимают один байт данных. Банковский реестр является частью Оперативная память во встроенном микроконтроллеры, и он используется для хранения программных инструкций. Каждый микроконтроллер состоит из различных банков памяти, и каждый регистр банка состоит из уникального адреса для распознавания места хранения.

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

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

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



Микроконтроллер 8051 состоит из четырех банков регистров, таких как Bank0, Bank1, Bank2, Bank3, которые выбираются регистром PSW (Слово состояния программы). Эти банки регистров присутствуют во внутренней оперативной памяти микроконтроллера 8051 и используются для обработки данных при программировании микроконтроллера.


Смена банков регистров



По умолчанию микроконтроллер 8051 питается от банка регистров 0, и, используя слово состояния программы (PSW), мы можем переключиться на другие банки. Два бита PSW используются для переключения между банками регистров. Доступ к этим двум битам осуществляется с помощью команд с битовой адресацией SETB и CLR.

На основе возможных комбинаций RS1 и RS0 в PSW, банк регистров изменяется соответственно, т.е. если RS1 и RS0 равны 0, то выбирается банк 0. Точно так же Bank1, 2 и 3 выбираются в соответствии со значениями RS1 и RS0.

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

Стек - это область оперативной памяти (RAM), выделенная для временного хранения всех параметров переменных. Стек также отвечает за напоминание о порядке вызова функции, чтобы ее можно было правильно вернуть. При каждом вызове функции связанные с ней параметры и локальные переменные добавляются в стек (PUSH). Когда функция возвращается, параметры и переменные удаляются («POP») из стека. Вот почему размер стека программы постоянно изменяется во время работы программы.


Регистр, используемый для доступа к стеку, называется регистром указателя стека. Указатель стека - это небольшой регистр, используемый для указания на стек. Когда мы что-то помещаем в стековую память, указатель стека увеличивается.

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

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

Пример

При включении микроконтроллера 8051 указатель стека содержит значение 07 по умолчанию, как показано на рисунке выше. Если мы выполним операцию «PUSH», то адрес указателя стека будет увеличен и сдвинут в другой регистр. Чтобы избежать этой проблемы, перед запуском программы мы должны назначить другое адресное место указателю стека.

PUSH операция

«PUSH» используется для извлечения значений из любого регистра и сохранения в начальном адресе указателя стека, то есть 00h, с помощью операции «PUSH». И для следующего «PUSH» он увеличивает +1 и сохраняет значение в следующем адресе указателя стека, то есть 01h.

PUSH операция стека

PUSH операция стека

Операция PUSH означает (первым пришел - первым ушел)

Пример: WAP на ассемблере для операции PUSH

0000ч
MOV 08h, # 21h
MOV 09h, # 56h
НАЖАТЬ 00ч
НАЖАТЬ 01ч
КОНЕЦ

POP Operation

Он используется для размещения значений из максимального адреса указателя стека в адрес любого другого регистра. Если мы снова используем этот «POP», он уменьшается на 1, и значение, хранящееся в любом регистре, дается как «POP».

Работа POP в стеке

Работа POP в стеке

Операция POP означает «Последний пришел - первым ушел».

000H
MOV 00H, # 12H
MOV 01H, # 32H
POP 1FH
ПОП 0EH
КОНЕЦ

Регистры микроконтроллера 8051

Если мы выполняем любую операцию, будь то сложение или вычитание, то эти операции не могут выполняться непосредственно в памяти и, следовательно, выполняются с использованием регистров. Есть разные виды регистры в микроконтроллере 8051 .

Эти регистры делятся на два типа в зависимости от их операций:

• Регистры общего назначения

• Регистры специальных функций

Регистры общего назначения

Как мы обсуждали ранее в этой статье, существует четыре разных регистра банка, каждый из которых имеет 8 адресуемых 8-битных регистров, и единовременно можно получить доступ только к одному регистру банка. Но, изменив номер банковского реестра в регистре флагов, мы можем получить доступ к другим банковским регистрам, которые обсуждались ранее в этом документе вместе с концепция прерывания в 8051 .

Регистры специальных функций

Регистры специальных функций, включая накопитель, регистр B, указатель данных, PCON, PSW и т. Д., Предназначены для заранее определенной цели при производстве с адресом от 80H до FFH, и эта область не может использоваться для хранения данных или программ. Эти регистры могут быть реализованы в виде регистров битового адреса и байтового адреса.

Типы регистров специальных функций

8051 состоит из четырех регистров специальных функций, связанных с вводом / выводом, в которых всего 32 линии ввода / вывода. Регистры специальных функций управляют значениями, считываемыми из линий ввода / вывода и регистров специальных функций, которые управляют работой 8051. Вспомогательные регистры специальных функций не связаны напрямую с 8051, но фактически без этих регистров 8051 не может работать должным образом. Набор регистров 8051 объясняется ниже.

Набор регистров микроконтроллера 8051

Установка фиксированного постоянного значения в регистре называется набором регистров. Значения устанавливаются в регистрах с помощью набора команд. 8051 следует инструкциям CISC с архитектурой «Гарвард». В CISC означает сложные вычисления с набором команд. . Различные типы инструкций в микроконтроллере 8051 включают:

  1. Арифметические инструкции
  2. Условные инструкции
  3. Инструкции по вызову и прыжку
  4. Циклические инструкции
  5. Логические инструкции
  6. Инструкции по инвестициям в слитки

1. Арифметические инструкции

Арифметические инструкции выполняют несколько основных операций, таких как:

  • Добавление
  • Вычитание
  • Умножение
  • Разделение
Арифметические инструкции в микроконтроллере 8051

Арифметические инструкции в микроконтроллере 8051

Примеры:

а. Добавление:

Org 0000h
MOV R0, # 03H // перемещаем значение 3 в регистр R0 //
MOV A, # 05H // перемещаем значение 5 в аккумулятор A //
Добавить A, 00H // значение аккумулятора «5» с 0 и сохранить в аккумуляторе //
КОНЕЦ

б. Вычитание:

Org 0000h
MOV R0, # 03H // перемещаем значение 3 в регистр R0 //
MOV A, # 05H // перемещаем значение 5 в аккумулятор A //
SUBB A, 03H // A = 5-3 конечное значение 2 сохраняется в аккумуляторе A //
КОНЕЦ

C. Умножение:

Org 0000h
MOV R0, # 03H // перемещаем значение 3 в регистр R0 //
MOV A, # 05H // перемещаем значение 5 в аккумулятор A //
MUL A, 03H // A = 5 * 3 конечное значение 15, хранится в аккумуляторе A //
КОНЕЦ

D. Подразделение:

Org 0000h
MOV R0, # 03H // перемещаем значение 3 в регистр R0 //
MOV A, # 15H // перемещаем значение 5 в аккумулятор A //
DIV A, 03H // A = 15/3 конечное значение 5 сохраняется в аккумуляторе A //
КОНЕЦ

2. Условные инструкции

ЦП может выполнять инструкции на основе условия, проверяя однобитный статус, или состояние байта называется условными инструкциями, такими как:

Чтобы проверить однобитный статус в регистре с битовой адресацией

JB - прыгать если ниже

JNB - прыгать если не выше

Чтобы проверить статус бита переноса

JC- перейти, если флаг переноса

JNC-прыжок, если нет керри

Для проверки статуса аккумулятора либо 0, либо 1

JZ- прыгать, если нулевой флаг

JNZ - прыжок если не ноль

Это все о регистре, установленном в микроконтроллере 8051, и о распределении памяти их стека. Мы надеемся, что эта статья, возможно, дала вам некоторые важные идеи по теме, а также несколько очень интересных программ, сопровождающих каждую тему. Вы также можете написать нам, если вам нужна помощь в кодирование микроконтроллера а также о последние проекты на микроконтроллере .