Главная  Микропроцессорные системы 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [ 33 ] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

Указанная последовательность действий в МП реализуется двумя способами: прерыванием с опросом и прерыванием по вектору.

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

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

Рассмотрим простейший способ реализации обслуживания прерываний с опросом - программный опрос. В этом случае запросы на обслуживание от всех ВУ должны подаваться в МП через схему «ИЛИ». При появлении сигнала «Запрос прерывания» на соответствующем входе МП необходимо выполнить следующие действия:

запретить дальнейшее появление сигналов «Запрос прерывания» на входе МП, что делается обычно с помощью специальной команды DI (Disable interrupt - «Запрет прерывания»),

сохранить состояние основных рабочих регистров ЦП и счетчика команд,

опросить в установленной последовательности ВУ и определить адрес источника прерывания,

осуществить обработку прерывания (например, ввод - вывод данных),

восстановить состояние основных рабочих регистров ЦП и счетчика команд,

снять запрет на дальнейший прием сигналов запроса на прерывания, что обычно осуществляется с помощью специальной команды EI (Enable interrupt -«Разрешение прерывания»),

вернуться к выполнению прерванной программы.

Перечисленные действия выполняются с помощью программы, схема которой приведена на рис. 3.25. Сохранение и восстановление состояния основных рабочих регистров ЦП обеспечивается в современных микро-ЭВМ за счет использования стэка. Подпрограмма об-



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

Как следует из вышеизложенного, при программном опросе флажок запроса прерывания каждого ВУ про-

Оснодноя программа

Разрешение прерыввний

. Основная программа


Проверка наличия сигнала запроса прерывания

Запрет прерывании

Сохранить (А) и (РОН)

Идентификация адреса запроса прерывания


Обработка прерываний

Обработка прерываний *

Обработка прерываний

Восстановление (А) и (РОН)

Возврат восноВнуи прогрйнн})

Рис. 3.25. Схема программного опроса ВУ при обмене с прерыванием программы

вернется в соответствии с программно реализуемой последовательностью опроса. Поэтому приоритет каждого ВУ в данном случае определяется его местом в последовательности опроса и устройство ВУ] (рис. 3.25) имеет наивысший приоритет.



Опрос ВУ можно организовать и при помощи аппаратных средств. В этом случае программный опрос заменяется опросом, выполненным с помощью «жесткой» логики. Сущность этого способа заключается в том, что сигнал «Подтверждение прерывания» из МП поступает последовательно на все ВУ, начиная с первого, облада-

Таблица 3.2

Ячейка

Содержимое

Примечание

INTR

PUSH PSW

PUSH В PUSHD PUSHH

POPH POPD POP В POP PSW EI RET

Сохранение (A) и флагов АЛУ в стэке

Сохранение свдержимого рабочих регистров ЦП в стэке

Подпрограмма обработки прерываний

Восстановление состояния рабочих регистров ЦП

Восстановление (А) и флагов АЛУ Разрешение прерываний Возврат в основную программу

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

Более быстродействующей является реализация обработки прерывания по вектор<у, требующая, однако, дополнительных аппаратных затрат. Функциональная схема такой обработки приведена на рис. 3.26. В ответ на сигнал «Запрос прерывания» МП посылает во внешние устройства сигнал «Подтверждение прерывания», который в запрашивающем устройстве открывает триста-бильные буферы, передающие на шину данных адрес этого устройства, постоянно хранящийся в специальном 104



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [ 33 ] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

0.0011