Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Пользователю -> Евстифеев А.В. -> "Микроконтроллеры семейства" -> 25

Микроконтроллеры семейства - Евстифеев А.В.

Евстифеев А.В. Микроконтроллеры семейства — Infineon, 2007. — 318 c.
Скачать (прямая ссылка): microkontrolleri2007.pdf
Предыдущая << 1 .. 19 20 21 22 23 24 < 25 > 26 27 28 29 30 31 .. 100 >> Следующая


Более подробно о порядке обслуживания ловушки переполнения стека и об управлении виртуальным стеком описано в разделе: «Системное программирование».

Указатель опустошения стека STKUN

Значение этого не адресуемого побитно регистра сравнивается с SP-регистром после каждой операции, запрашивающей данные из системного стека (при помощи команд POP и RET), и после каждого увеличения значения SP-регистра. Если содержимое SP-регистра больше, чем содержимое STKUN-регистра, то будет иметь место аппаратная ловушка.

Так как наименьший значащий бит в STKUN-регистре всегда равен нулю, а также битам 15-12 всегда аппаратно присваивается «1», то STKUN-регистр может содержать значения от F000H до FFFE+.

SFR

6-27 МЭИ, Центр Промышленной Электроники Фирмы Infineon

Система прерываний и ловушек/С167

STKUN (FE16H/0BH)

Значение после RESET: FC00H

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 О

1 1 1 1 stkun О

г г г г rw г

Бит Функция
stkun Модифицируемая часть регистра STKUN Определяет верхний предел внутреннего системного стека

Ловушка опустошения стека (задействуется при условии: (SP)>(STKUN)) может быть использована двумя способами.

• Указание на фатальную ошибку обрабатывает опустошение стека как системную ошибку с помощью подпрограммы обслуживания ловушки.

• Автоматический refilling системного стека позволяет использовать системный стек как «Кеш стека» для получения большего значения объема пользовательского стека. В этом случае, в STKUN-регистр устанавливается значение, которое представляет собой высшее значение адреса основания стека.

Более подробно обслуживание ловушки по опустошению стека и управление виртуальным стеком рассмотрено в разделе «Системное программирование».

Сфера действий управления пределом стека

Управление границами стека реализовано с помощью регистров STKOV и STKUN, определяющих случаи выхода указателя стека SP за пределы очерченной области стека. Переполнение и опустошение стека имеет место при использовании команд ADD или SUB, либо при использовании операций PUSH или POP (явных и неявных, т.е. CALL или RET команды).

Механизм обнаружения ловушек не срабатывает, т.е. ловушки стека не создаются заново когда:

• Значение указателя стека изменяется прямо с помощью команд MOV

• Изменяются пределы области стека (STKOV, STKUN), и поэтому SP находится вне новых границ

Старший регистр умножения/деления MDH

Этот регистр является частью 32-битного регистра умножения/деления, используемого ЦПУ при совершении операций

6-28 МЭИ, Центр Промышленной Электроники Фирмы Infineon

Система прерываний и ловушек/С167

умножения и деления. После умножения, этот не адресуемый побитно регистр содержит старшие 16 битов 32-битного результата. Для длинного деления, в MDH-регистр должны быть загружены старшие 16 битов 32-битного делимого до начала операции деления. После любого деления в MDH-регистре содержится 16-битный остаток.

SFR

MDH (FE0C+/06+) Значение после RESET: 0000+

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Mdh
Rw
Бит Функция
mdh Содержит старшие 16-битов 32-битного регистра умножения и деления MD

Как только программно изменяется значение этого регистра, устанавливается «1» в флаге MDRIU, регистра управления умножением и делением.

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

Подробное описание использования MDH-регистр для программирования алгоритмов умножения и деления дано в разделе «Системное программирование».

Младший регистр умножения/деления MDL.

Этот регистр является частью 32-битного регистра умножения/деления, используемого ЦПУ для совершается умножения или деления. После умножения, этот не адресуемый побитно регистр содержит младшие 16-битов 32-битного результата. Прежде чем начать операцию длинного деления, в MDL-регистр необходимо загрузить младшие 16 битов 32-битного делимого. После любого деления, регистр MDL содержит 16-битное частное.

6-29 МЭИ, Центр Промышленной Электроники Фирмы Infineon

Система прерываний и ловушек/С167

SFR

MDL (FE0E+/07+) Значение после RESET: 0000

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Mdl
Rw
Бит Функция
Mdl Содержит младшие 16-битов 32-битного регистра умножения и деления MD

Как только программно изменяется значение этого регистра, в флаге MDRIU устанавливается «1». В случае программного чтения MDL-регистра, флаг MDRIU устанавливается в «0».

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

Подробное описание о том, как использовать MDL-регистр для программирования алгоритмов умножения и деления, дано в разделе «Системное программирование».

Контрольный регистр умножения/деления MDC

Этот адресуемый побитно 16-битный регистр используется ЦПУ во время совершения умножения или деления. Он используется для сохранения требуемой информации для управления операциями умножения и деления. Значение регистра MDC изменяется аппаратно, в течении каждого такта команды умножения и деления.
Предыдущая << 1 .. 19 20 21 22 23 24 < 25 > 26 27 28 29 30 31 .. 100 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100