ICW1 — определить особенности последовательности приказов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

ICW1 — определить особенности последовательности приказов



Состояние битов этого приказа (табл. 15.1) определяет особенности в последователь­ности приказов при инициализации контроллера. Данный приказ посылается в порт 20h

Таблица 15.1. Формат приказа ICW1

Биты ICW1 Назначение и содержимое
  1 — управляющее слово ICW4 будет присутствовать в данной последовательности приказов
  0 — каскадное подключение i8259A (1CW3 будет в последова­тельности); 1 — одиночное подключение i8259A (ICW3 не будет)
  0 — не используется
  0 — прерывание но перепаду сигнала
  1 — признак ICW1
  0 — не используется
  0 — не используется
  0 — не используется

ICW2 — определение базового адреса

Настало время прояснить еще один принципиальный момент, до этого времени сознательно замалчиваемый. Он связан с принципом определения числового диа­пазона адресов векторов прерываний для аппаратных прерываний, замкнутых на контроллер прерываний. В реальном режиме работы микропроцессора для хра­нения указателей (векторов) на процедуры-обработчики прерываний использу­ется специальная область памяти — таблица векторов прерываний. Эта таблица начинается с нулевого адреса оперативной памяти и занимает 1 Кбайт. Среди векторов есть, конечно, и вектора, указывающие на процедуры-обработчики тех прерываний, которые замкнуты на контроллер. Эти вектора располагаются в таб­лице последовательно, одной группой, и их нумерация начинается с некоторого номера вектора, называемого базовым. Приказ ICW2 (табл. 15.2) позволяет задать номер этого базового вектора для контроллера прерываний в соответствии с тем номером, который назначен соответствующему вектору в таблице векторов пре­рываний. В реальном режиме работы микропроцессора BIOS в процессе началь­ной загрузки системы инициализируется ведущий контроллер значением 08h, a ведомый — значением 70h. Теперь понятно, почему обработчику прерываний от таймера соответствует номер вектора 08h в таблице векторов прерываний, хотя физически он замкнут на уровень 0 контроллера i8259A. При желании мы вполне можем изменить значение базового номера на любой не используемый в системе помер, к примеру — 90h. Также следует учитывать, что некорректная установка нового номера этим приказом может полностью нарушить работу всей системы.

Данный приказ посылается в порт 21 h.

Таблица 15.2. Формат приказа ICW2

Биты ICW2 Назначение и содержимое
  0 — не используется
  0 — не используется
  0 — не используется
  Бит для задания номера базового вектора
  Бит для задания номера базового вектора
  Бит для задания номера базового вектора
  Бит для задания номера базового вектора
  Бит для задания номера базового вектора

Как видно, для задания номера базового вектора используются биты с 3 по 7 приказа ICW2. Объяснить это можно тем, что на контроллер замыкаются 8 источ­ников прерываний. Выше мы отметили, что номера векторов, соответствующих прерываниям, замкнутых на контроллер, имеют последовательные номера, начи­ная с базового. Так, для контроллера, инициализированного значением базового номера 08h, номера векторов в таблице векторов прерываний будут 08h, 09h, 0ah. 0bh и т. д. Отсюда и получается, что для задания базового номера биты 0...2 ис­пользовать нельзя, так как они применяются для формирования адресов векто­ров прерываний следующих после базового уровней.

ICW3 — связь контроллеров

Этот приказ предназначен для связи контроллеров в системе с несколькими кон­троллерами прерываний.

Вариант работы с одной микросхемой i8259A, позволяющий обрабатывать за­просы от 8 источников, использовался в ранних системах на базе микропроцес­соров i8088/86 (в архитектуре XT). Но i8259A позволяет организовать так назы­ваемое каскадное соединение этих микросхем, при котором выход INT од­ной микросхемы подается на вход одного из уровней i г q другой микросхемы (см. рис. 15.1). Это позволяет организовать обработку запросов от большего чис­ла источников. При этом один контроллер является ведущим, а другой — ведо­мым (тот, который подключен ко входу irq ведущего). Ниже мы разберемся с кас­кадированием более подробно. Сейчас отметим, что формат приказа ICW3 зависит от того, какой контроллер инициализируется — ведущий (табл. 15.3) или ведомый (табл. 15.4). При инициализации ведущего контроллера ICW3 сообщает, к каким его входам irq подсоединены ведомые контроллеры. Соответственно, при инициализа­ции ведомого контроллера нужна другая форма этого приказа, которая несет ин­формацию о том, к какому входу ведущего подключен данный ведомый контроллер.

Приказ ICW3 посылается в порт 21 h.

Таблица 15.3. Формат приказа ICW3 (для ведущего контроллера)

Биты ICW3 Назначение и содержимое
  1 — если ко входу irq0 подключен ведомый контроллер; 0 — если ко входу irq0 подключено внешнее устройство
  1 — если ко входу irql подключен ведомый контроллер; 0 — если ко входу irql подключено внешнее устройство
  1 — если ко входу irq2 подключен ведомый контроллер; 0 — если ко входу irq2 подключено внешнее устройство
  1 — если ко входу irq3 подключен ведомый контроллер; 0 — если ко входу irq3 подключено внешнее устройство
  1 — если ко входу irq4 подключен ведомый контроллер; 0 — если ко входу irq4 подключено внешнее устройство
  1 — если ко входу irq5 подключен ведомый контроллер; 0 — если ко входу irq5 подключено внешнее устройство
  1 — если ко входу irq6 подключен ведомый контроллер; 0 — если ко входу irq6 подключено внешнее устройство
  1 — если ко входу irq7 подключен ведомый контроллер; 0 — если ко входу irq7 подключено внешнее устройство

Таблица 15.4. Формат приказа ICW3 (для ведомого контроллера)



Поделиться:


Последнее изменение этой страницы: 2017-02-05; просмотров: 476; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.69.152 (0.005 с.)