![]() |
Главная Микропроцессорные системы [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.0012 |