Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСвИС / (х) учебное пособие. организация Компьютеров и Систем.doc
Скачиваний:
91
Добавлен:
28.05.2015
Размер:
1.15 Mб
Скачать

2.16 Контроллер прерываний к1810вн59 (i8259).

Данная микросхема предназначена для обслуживания двух различных групп МП. К первой группе относятся МП 580 и 8085, ко второй – 8086, 8088, 80286, 80386 и. т. д. Мы рассмотрим работу ВН59 при обслуживании МП второй группы. Подключение ВН59 к системной шине показано на рис. 20.

Рис. 20

Контроллер имеет восемь входов запросов на прерывание (IR7 – IR0). Восприняв запрос на одном из этих входов ВН59, формирует сигнал на выходе INT. Этот сигнал подается на вход INTR ВМ86. Если внешние прерывания не замаскированы, МП подтверждает прерывание, выставляя два сигнала на выходе INTA. Эти сигналы поступают на одноименный вход контроллера, и по второму из них ВН59 выставляет на ШД тип прерывания. Этот тип он формирует следующим образом: старшие пять разрядов типа задает программист при настройке контроллера, а на место младших трех разрядов ВН59 подставляет двоичный номер линии, по которой пришел запрос.

Несмотря на то, что внутренняя архитектура ВН59 включает в себя довольно много различных регистров, с точки зрения программиста, контроллер содержит всего два адресуемых устройства, выбор между которыми определяет сигнал на линии А0.

В системе могут использоваться несколько ВН59, соединенных каскадно. При этом один контроллер является ведущим, а все остальные ведомыми. Выходы INT ведомых контроллеров заводятся на входы IRi ведущего контроллера. Таким образом, максимальное число контроллеров в системе равно девяти, а максимально возможное число источников внешних прерываний равно 64. На рис. 21 показан пример каскадного соединения контроллеров.

Перед началом работы все контроллеры должны быть настроены. Для этого на каждый ВН59 надо подать три или четыре команды инициализации (ICW1 – ICW4). Три команды подаются, если в системе один контроллер прерываний,

Рис. 21

четыре – если несколько. Далее рассмотрим упрощенные форматы этих команд для второй группы процессоров.

ICW1 передается при А0=0 и имеет формат, приведенный на рис. 22.

Рис. 22

Если D1=0 – в системе несколько контроллеров и, следовательно, будет команда инициализации ICW3. При D1=1 – в системе один контроллер и ICW3 передаваться не будет.

ICW2 передается при А0=1 и имеет формат, приведенный на рис.23. Здесь Т7-Т3 – старшие пять разрядов типа прерывания.

Формат ICW3 различается для ведущего и ведомых контроллеров. Для ведущего: если в i-ом разряде ICW3 стоит единица, значит к линии IRi подключен ведущий контроллер. Для ведомого ICW3 имеет формат, приведенный на рис 24. Передается ICW3 при А0 = 1.

ICW4 передается при А0=1 и обычно имеет формат, приведенный на рис. 25.

Рис. 23

0

0

0

0

0

N2

N1

N0

  • Здесь N 2-0 – двоичный номер линии IR ведущего контроллера, к которой подключен данный ведомый.

Рис. 24

Рис. 25

В IBM PC/XT стоит один контроллер ВН59. Ему назначены системные адреса 20h (А0=0) и 21h (А0=1). Настройка ВН59 в XT производится следующей последовательностью команд:

mov al, 13h ; передаем ICW1, ICW3 не будет

out 20h, al

mov al, 8 ; передаем ICW2. Старшие разряды типа задаем

out 21h, al ; равными 00001. Таким образом, для линии IR0

; (прерывание от канала 0 таймера) контроллер

; будет вырабатывать тип = 08h, для линии IR1

; (прерывание от клавиатуры) – тип = 09h, и. т. д.

mov al,1 ; передаем ICW4

out 21h, al

Начиная с PC/AT, в системе стоит два ВН59. При этом все вышесказанное для ВН59 в ХТ является справедливым для ведущего в АТ.

После того как ВН59 настроен, все остальные настроечные слова он воспринимает как команды управления. Всего имеется три таких команды. Обычно их обозначают OCW1, OCW2 и OCW3.

OCW1 передается при А0 = 1. Если в i-ом разряде OCW1 стоит единица, вход IRi контроллера маскируется и запросы на этом входе ВН59 восприниматься не будут до тех пор, пока программист его не размаскирует.

Во избежание конфликтов всем входам IR контроллера присваиваются приоритет. Если программист не задает приоритеты линий IR, по умолчанию линии IR0 присваивается старший, а линии IR7 – младший приоритет. Команда OCW2 (передается при А0 = 0) позволяет менять приоритеты линий IR.

Пользователь должен знать о следующей важной особенности работы контроллера ВН59. Если контроллер настроен на «обычный конец прерывания», то восприняв запрос на линии IRi он автоматически маскирует эту линию и все линии IR с более низкими приоритетами. Иногда говорят что контроллер «ставит штору». Снимать штору самостоятельно контроллер не умеет. Это должен делать программист передав в контроллер команду управления OCW2 формата: 20h. Как правило штора снимается в конце обработчика. Например в конце обработчика прерывания от клавиатуры должны стоять две команды:

mov al,20h

out 20h,al

; снимаем штору в ХТ или у ведущего

; в АТ

Если эти команды не поставить, клавиатура будет заблокирована.

OCW3 передается при А0 = 0 и на практике используется редко.