Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000544.doc
Скачиваний:
26
Добавлен:
30.04.2022
Размер:
14.75 Mб
Скачать

10.2.1. Режимы работы пкп

Отличительной чертой БИС типа 8259А является ее программируемость. Путем программирования ПКП может быть установлен на разные режимы работы.

  1. Режим фиксированных приоритетов. В этом режиме контроллер находится сразу после инициализации. Запросы прерывания имеют жесткое распределение приоритетов от 0 (высший) до 7. Запросы с низшим приоритетом не будут обрабатываться, пока обрабатываются запросы с высшим приоритетом.

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

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

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

  5. Режим специальной маски. В этом режиме отменяется приоритетное упорядочивание обработки запросов и запросы обрабатываются по мере поступления.

  6. Режим опроса (поллинг). В этом режиме аппаратные прерывания не вызываются автоматически. Появление запросов на прерывание должно определяться считыванием IRR. Чтение этого регистра позволяет получить информацию о наличии запросов на прерывание и номер уровня с максимальным приоритетом, по которому есть запрос.

10.2.2. Программирование пкп

Программирование ПКП осуществляется двумя типами управляющих слов: командами инициализации ICW (Initialization Command Word) и командами управления OCW (Operation Command Word). Для вывода информации в контроллер используются 2 регистра: порт с четным адресом А0=0 (обычно порт 20h) и порт с нечетным адресом А0=1 (порт 21h).

Четыре команды инициализации ICW1-ICW4 загружаются перед началом работы и служат для установки БИС в исходное состояние. Команды управления OCW1—OCW3 могут быть переданы в ПКП в любое время после окончания инициализации. Они предназначены для оперативного управления работой контроллера. При каскадном включении каждая БИС программируется независимо от других. В порт с четным адресом выводятся ICW1,OCW2 и OCW3. OCW2 отличается от OCW3 тем, что бит3 в OCW2 равен 0, а в OCW3 равен 1.

Порт с нечетным адресом используется для вывода ICW2, ICW3, ICW4 и OCW1. Неоднозначности в интерпретации данных в этом случае не возникает, поскольку слова инициализации ICW2 - ICW4 должны непосредственно следовать за ICW1, выведенным в порт с четным адресом .

Инициализация контроллера начинается с вывода ICW1 в порт 20h. Отличительным признаком ICW1 является наличие 1 в 4-ом бите (счет идет от 0) команды инициализации. В процессе инициализации контроллер последовательно принимает управляющие слова ICW2 - ICW4 с нечетного порта. При наличии в системе одного контроллера ICW3 не выводится. Наличие ICW4 определяется содержанием ICW1. При наличии каскада из нескольких ПКП каждый из них инициализируется отдельно.

Формат ICW1следующий:

7

6

5

4

3

2

1

0

-

-

-

1

LTIM

ADI

SNGL

IC4

При D4=l и А0 = 0 входной байт интерпретируется как ICW1.

Бит 3 (LTIM), равный 0, задает установку запросов в IRR фронтом, при значении бита равным 0 запрос устанавливается уровнем.

Бит 2 (АDI) игнорируется; он используется только в ПЭВМ на базе микропроцессоров Intel 8080.

Бит 1 указывает на наличие одного контроллера (SINGL=1) или каскада контроллеров (SINGL=0). Если этот бит равен 1, то ICW3 не выводится в процессе инициализации и следом за ICW2 должно следовать с ICW4.

Бит 0 (IC4) определяет, будет ли выводиться ICW4. Если бит равен 0, то ICW4 не выводится, и оно автоматически заполняется нулями. Для Intel *86 обязательно задается значение бита равное 1 и, следовательно, ICW4 обязательно выводится.

Управляющее слово ICW2 задает номер вектора прерывания для прерываний уровня 0. Например, вектор 8 задается для IВМ РС, у которого по уровню 0 происходит прерывание от таймера. Вектора аппаратных прерываний располагаются подряд друг за другом и, следовательно, вывод во втором слове инициализации числа 8 не только задает восьмой вектор для таймера, но и девятый для прерываний уровня 1, десятый (0Ah) для прерываний уровня 2 и т. д.

Управляющее слово ICWЗ выводится только при наличии каскада. Оно имеет разные форматы для ведущего и ведомых контроллеров. ICWЗ ведущего контроллера указывает, к каким входам (IR0 - IR7) подключены ведомые контроллеры. При этом соответствующие биты устанавливаются в 1. Остальные биты равны 0.

ICWЗ ведомого (slave) ПКП в трех младших битах задается номер уровня, на котором работает ведомый контроллер, т.е. номер входа ведущего, к которому подключен выход INT ведомого. Например, для ведомого контроллера, работающего на уровне 2 ICWЗ равно:

7

6

5

4

3

2

1

0

0

0

0

0

0

0

1

0

ICW4 имеет 0 в 5-7 разрядах. Нулевой бит определяет тип процессора: 0 – 8080, 1 – 8086. Первый бит определяет режим завершения процедуры обработки прерывания: 1 – автоматическое завершение, 0 – процедура обработки аппаратного прерывания должна сама сбрасывать свой бит в ISR. Второй бит игнорируется, если третий бит (BUF-устанавливающий режим буферизации) равен 0. При наличии одного контроллера и BUF=1, второй бит устанавливается в 1. При каскадировании этот бит должен быть равен 1 только для ведущего контроллера. При единичном значении третьего бита устанавливается режим буферизации. Четвертый бит устанавливает специальный вложенный режим, применяемый при каскадировании для определения приоритетов запросов от разных контроллеров.

После инициализации ПКП готов к работе в заданном режиме и можно ввести 3 командных слова.

Первое командное слово OCW1 передается по нечетному адресу (21h) и является байтом маски. Единичное значение битов маски означает, что прерывания соответствующего уровня маскируются и не будут обрабатываться контроллером.

Второе слово рабочих приказов OCW2 (адрес 20h) предназначено для вывода команды завершения обработки аппаратного прерывания (ЕOI), циклического сдвига и явного изменения приоритета уровней. Назначение битов OCW2 следующее:

7

6

5

4

3

2

1

0

R

SL

EOI

0

0

L2

L1

L0

Три младших бита L0 – L2 указывают уровень прерывания, если это необходимо в команде. Установленный пятый бит (EOI) является признаком команды обычного завершения обработки прерывания, при котором сбрасывается в ISR бит, соответствующий прерыванию с максимальным приоритетом. Назначение седьмого и шестого битов:

00 – обязательно используется при установке в единицу бита нормального завершения EOI;

01 - команда специального завершения, при которой в ISR сбрасывается, независимо от приоритета, бит с номером указанным разрядами L0- L2;

10- бита команды циклического сдвига приоритетов влево на одну позицию;

11 – биты команды назначения низшего приоритета уровню с номером, указанным битами L0 – L2, при этом приоритеты остальных уровней сдвигаются циклически.

Отсюда видно, что команда обычного завершения имеет код 20h и должна быть послана по адресу 20h.

Третье слово команды OCW3 устанавливает или отменяет режим специальной маски и переводит контроллер в режим опроса регистров. Формат командного слова

7

6

5

4

3

2

1

0

0

E SMM

SMM

0

1

P

RR

RIS

10- отменить режим специальной маски,

11 - установить режим специальной маски.

010 –чтение IRR,

011 – чтение ISR,

1** - установка режима опроса.

При p=0 (команда выбора порта для чтения) можно передать в контроллер команду чтения IRR или ISR (порт 20h) и затем считать содержимое соответственно регистров IRR или ISR из порта с нечетным адресом (21h). Если бит опроса (поллинга, Polling) в команде установлен, ПКП переводится в режим опроса. Прерывания в этом случае вызываться не будут. Для получения данных о наличии запросов необходимо чтение порта с четным адресом. При этом считанные данные из порта с четным адресом (20h) будут иметь вид

7

6

5

4

3

2

1

0

I

0

0

0

0

L2

L1

L0

Единица в старшем бите (I=1) указывает, что имеются запросы на прерывания, а три младших разряда дают номер уровня с наивысшим приоритетом, по которому имеется запрос.

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