Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 217

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 211 212 213 214 215 216 < 217 > 218 219 220 221 222 223 .. 528 >> Следующая

механизм загрузки векторов прерывания. В адресном пространстве памяти
программ МК выделена специальная область, которая носит название сегмента
векторов прерывания. Каждому источнику запросов на прерывание в этой
области отведено по два байта памяти с фиксированными адресами.
Пользователь на этапе программирования МК заносит в эти ячейки памяти
адрес начала подпрограммы прерывания. При переходе к выполнению
подпрограммы прерывания этот адрес автоматически загружается в счетчик
адреса центрального процессора. В рассматриваемом сегменте памяти
размещается также вектор сброса.
Ниже приведен пример структуры прикладной программы с двумя
подпрограммами
прерывания по запросам на входе Jrq и от процессора событий TIM1.
Абсолютные адреса сегмента векторов прерывания соответствуют карте памяти
МК MC68HC908GP32.
vectorirq: equ SFFFA
vectortiml: equ SFFF2
vectorreset: equ SFFFE
;Основная программа
START: Idhx #$1 FF ; Инициализация указателя стека с целью
переместить
txs ; область стековой памяти из нулевой в первую страницу
; ОЗУ МК.
Тело подпрограммы инициализации
cli ; Разрешить прерывания: установить в 0 глобальную
; маску прерываний.
Тело основной программы управления
; Подпрограмма прерывания по внешнему запросу.
INTJRQ: pshh ; Сохранить в стеке старший байт индексного регистра
Н:Х.
; Сохранение остальных регистров центрального процессора ; (регистра
признаков CCR; аккумулятора АСС и младшего ; байта индексного регистра X)
произошло автоматически при ; переходе к выполнению подпрограммы
прерывания.
Тело подпрограммы прерывания
pulh ; Восстановить из стека старший байт индексного регистра
; Н:Х.
rti ; Возврат из прерывания. Эта команда восстанавливает
; из стека регистры X, АСС и CCR автоматически без ; использования
специальных команд.
387
в-НАЗРЯДНЫЕ МИКРОКОНТРОЛЛЕРЫ
; Подпрограмма прерывания по переполнению счетчика временной базы
процессора ; событий TIM1
INT_TIMA1: pshh ; Сохранить в стеке старший байт индексного
регистра Н.
Тело подпрограммы прерывания
pulh ; Завершение подпрограммы прерывания,
rti ;
; Определить вектора прерывания и начального запуска org vectorjrq dw
INTJRQ org vectorjima dw INT_TIM1 org vector_reset dw START
Аппаратные средства прерывания МК семейства НС08 имеют следующие
особенности:
• выполнение команды возврата из прерывания RTI автоматически разрешает
прерывания;
• выполнение команды возврата из прерывания RTI не блокирует прерывания
на период выполнения следующей команды; вход в новую подпрограмму
возможен сразу после выполнения команды RTI.
Дело в том, что при входе в подпрограмму прерывания бит глобальной маски
прерывания I обязательно равен 0. Иначе прерывания были бы запрещены и
говорить о подпрограмме прерывания не имело бы смысла. Содержимое
регистра признаков, в котором располагается маска I, сохраняется в стеке
при входе в подпрограмму прерывания. Следовательно, при восстановлении
регистра признаков из стека по команде RTI бит глобальной маски
прерывания установится в "0", и прерывания будут разрешены.
Все источники прерываний МК семейства НС08 можно разделить на три группы:
1) немаскируемое программное прерывание по команде SWI;
2) маскируемые внешние прерывания по входу IRQ и по некоторому числу
линий портов ввода/вывода, которые принадлежат модулю сканирования
клавиатуры KBI08;
3) маскируемые прерывания от периферийных модулей.
Механизм программного прерывания позволяет обратиться к какой-либо
подпрограмме прерывания по ходу выполнения прикладной программы и
воспользоваться подпрограммой прерывания как обычной подпрограммой.
Наличие в системе команд инструкции программного прерывания SWI
предоставляет такую возможность. Эта команда автоматически загружает в
стек регистры CCR, АСС, X и увеличенное на единицу содержимое счетчика
команд PC, а затем осуществляет переход по адресу, который указан в
ячейках памяти $FFFC и $FFFD сегмента векторов прерывания. Этот адрес
может быть начальным адресом подпрограммы прерывания или же находиться
внутри нее. При выходе из1*-подпрограммы прерывания команда RTI
восстановит содержимое регистров централь- * ного процессора и МК
продолжит выполнение прикладной программы с команды, кото- Й рая была
следующей за командой SWI. Таким образом, программисту предоставляется
возможность обращения в произвольный момент времени к фрагменту
подпрограммы прерывания, который начинается с произвольно выбранной
инструкции внутри подпрограммы прерывания, но заканчивается обязательно
командой RTI.
Число линий МК MC68HC908GP32 для приема внешних запросов на прерывания
ва-рьируется от одной линии (вход IRQ) до 9 линий. Обслуживание запросов
по входу irq
388
ш
СЕМЕЙСТВО МК НС08 ФИРМЫ "MOTOROLA"
осуществляет модуль внешних прерываний IRQ08. Активный уровень сигнала
запроса на входе irq - низкий логический, длительность сигнала запроса
должна составлять не менее tILIH=50 не. Дополнительные входы внешних
запросов могут быть получены путем соответствующей инициализации модуля
Предыдущая << 1 .. 211 212 213 214 215 216 < 217 > 218 219 220 221 222 223 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed