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

Pts Select Register

1.11. Предоставление pts прерывания

После того, как Вы назначаете прерывание к PTS, Вы должны разрешить и PTS и индивидуальное прерывание. Бит разрешения PTS в слове состояния процессора (PSW.2) глобально разрешает или запрещает PTS. Команда EPTS устанавливает бит PSW.2, допуская PTS. Команда DPTS очищает этот бит, отключая PTS. Биты в INT_MASK и INT_MASK1 разрешают или запрещают индивидуальные прерывания PTS ( см. табл.3 ).

1.12. Предоставление стандартных прерываний

Когда Вы назначаете прерывание стандартной сервисной программе обслуживания прерывания, Вы должны разрешить и обслуживание прерывания и индивидуальное прерывание. Бит глобального разрешения прерывания (I) в слове состояния процессора (PSW.1) глобально разрешает или запрещает обслуживание всех маскируемых прерываний. Команда EI устанавливает бит PSW.1, разрешая обслуживание прерываний. Команда DI очищает этот бит, запрещая обслуживание прерываний. Биты в INT_MASK и INT_MASK1 индивидуально разрешают или запрещают прерывания (см. табл.3 ). Прерывание, которое происходит во время обслуживания прерывания, глобально запрещается (PSW.1 сбрасывается) и задерживается в регистрах захвата прерывания.

1.13. Выбор источников прерывания

Каждый из пяти следующих источников прерывания (HSI FIFO Full, EXTINT1, Receive, Transmit, Timer 2 Overflow) могут генерировать два различных прерывания:

- 8096BH - совместимое прерывание;

- отдельное прерывание для 8xC196KC;

В любом случае, надо разрешать только одно прерывание для каждого источника. То есть бит маски должен быть установлен только для одного из двух возможных прерываний. На рис.@.3 приведены источники прерывания для каждого вектора прерывания. В табл.3 приведены значения битов регистра IOC1, которые выбирают каждый из источников.

1.14. Регистры маскирования прерываний

Регистры маскирования прерывания, INT_MASK (08H) и INT_MASK1 (13H), разрешают или запрещают(маскируют) индивидуальные прерывания. За исключением бита немаскируемого прерывания (NMI) ( INT_MASK1.7 ), установка соответствующего бита разрешает соответствующее прерывание; очистка соответственно запрещает прерывание. Когда устройство сбрасывается, регистры маски прерывания очищаются (запрещая прерывания ). Регистры читаемы и записываемы во всех окнах. Команда PUSHA сохраняет содержимое этих регистров в стеке, а POPA восстанавливает.

1.15. Регистры захвата прерывания

Когда детектор фронта прерывания обнаруживает прерывание, он устанавливает соответствующий бит в INT_PEND(09H) или INT_PEND1(12H) регистрах, даже если индивидуальное прерывание отключено (замаскировано). Бит захвата очищается, когда программа переходит к подпрограмме обработки прерывания( стандартного или PTS прерывания ). INT_PEND и INT_PEND1 можно читать, чтобы определить, какие поступили прерывания.

С помощью программного обеспечения, биты в этих регистрах можно устанавливать или сбрасывать, генерируя прерывания. Однако надо быть осторожным при записи кода в эти регистры. Например, последовательность команд, которая очищает бит захвата, может привести к подтверждению прерывания после того, как последовательность начнется, но прежде, чем бит фактически очистится.

В этом случае происходит частичный цикл прерывания в 5 тактов. То ecть процесс прерывания начинается, но никогда не переходит к программе обработки прерывания.

Такую задержку можно предотвратить, делая код неделимым, то есть прерывания не будут подтверждаться, пока выполняется этот код. Самый простой способ состoит в том, чтобы использовать логические

команды в двух или трех операндном формате, например:

ANDB INT_PEND, #01111111B ; Очищает прерывание EXTINT

ORB INT_PEND, #10000000B ;Устанавливает прерывание EXTINT

8XC196KC/KD не подтверждает прерывания в течение выполнения этих команд "чтение-модификация-запись".

Регистры INT_PEND, INT_PEND1 доступны для чтения/записи во всех окнах.

По сбросу INT_PEND, INT_PEND1 = 0000 0000

Рис.@.3 Источники прерывания

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