Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
29
Добавлен:
03.06.2014
Размер:
3.33 Mб
Скачать

1.9. Специальные прерывания

8XC196KC/KD поддерживает три специальных прерывания: невыполняемый код операции (Unimplemented Opcode), программная ловушка (TRAP) и NMI. На эти прерывания не воздействует бит разрешения прерывания (I) (PSW.1), и они не могут маскироваться. Все эти прерывания обслуживаются контроллером прерывания; они не могут быть назначены к PTS.

Из этих трех прерываний, только NMI идет через детектор фронта прерывания и приоритетный шифратор, а другие два специальных прерывания идут непосредственно для обслуживания в контроллер прерывания .

1.9.1. Прерывание по невыполняемому коду операции

Если CPU пытается выполнить несуществующий код операции , происходит косвенное обращение по вектору в ячейке 2012H . Это предотвращает произвольное выполнение программ во время отказов программного обеспечения и аппаратных средств.

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

1.9.2. Прерывание по ловушке программного обеспечения

Команда TRAP ( код операции 0F7H ) выполняет вызов прерывания по вектору в ячейке 2010H. Команда TRAP выполняет прерывание одиночной команды, которое используется при отладке программного обеспечения или при генерации программных прерываний. Команда TRAP запрещает подтверждение других прерываний, пока не выполнится следующая команда .

1.9.3. Немаскируемое прерывание

Внешний вывод NMI (P2.2, если IOC1.1=0, P0.7, если IOC1.1=1) генерирует немаскируемое прерывание для реализации критических подпрограмм прерывания. NMI имеет самый высокий приоритет относительно всех располагаемых по приоритетам прерываний. Оно идет непосредственно от детектора фронта прерывания к приоритетному шифратору и оттуда к программе по вектору в ячейке 203EH. Прерывание NMI генерируется в течение Фазы 1 ( CLKOUT =0 ) и внутренне защелкивается. Если вывод удерживается в высоком состоянии, многократные прерывания не будут происходить. Если ваша система не использует NMI прерывание, для предотвращения ложных прерываний присоедините контактный вывод NMI к земле . Хотя в регистре INT_MASK1 существует бит маскирования NMI, однако, он не выполняет никакой функции; NMI разрешен и при установленном и при сброшенном бите NMI в INT_MASK1. Чтобы гарантировать совместимость с будущими изделиями(программами), всегда сбрасывайте в нуль бит маскирования NMI.

1.10. Программирование прерываний

В табл.@.2 приведены программируемые регистры, которые воздействуют на работу и функции контроллера прерывания и PTS.

Табл.2 Регистры состояния и управления прерываниями и PTS.

Мнемоника

Название регистра

Описание регистра

INT_MASK INT_MASK1

Маска прерывания

Эти регистры разрешают/запрещают любое маскируемое прерывание

INT_PEND INT_PEND1

Задержка прерывания

Биты в этих регистрах устанав-ливаются аппаратными средствами и показывают какое прерывание задержано.

IOC1

Управление ВВОДОМ-ВЫВОДОМ

Этот регистр выбирает источник прерываний INT00, INT02, и INT07.

IOS1

Состояние ВВОДА -ВЫВОДА

Этот регистр содержит флажки которые указывают какое событие вызвало прерывание.

PSW

Слово состояния процессора

Этот регистр содержит один бит который глобально разрешает или запрещает обслуживание всех маскируемых прерываний и другой, который разрешает или запрещает PTS.

PTSSEL

Выбор PTS

Этот регистр выбирает или цикл PTS или стандартную программу обслуживания прерывания для каждого из пятнадцати маскируемых запросов прерывания.

PTSRV

Обслужива-

ние PTS

Биты этого регистра устанавливаются аппаратными средствами при требовании конца PTS прерывания.

Регистр PTSSEL (05H/04H, Hwindow1) состоит из двух байтов. Установка бита выбирает PTS цикл, очистка - стандартную подпрограмму обработки прерывания.

После сброса PTSSEL = 0000 0000 0000 0000 B

Соседние файлы в папке lab96