Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
2.4. Ввод-вывод по прерыванию
При вводе-выводе по прерыванию внешние устройства подают на вход INT микропроцессора 8080 сигнал запроса прерывания IRQ {Interrupt Request). Значение сигнала INT МП анализирует в последнем такте последнего машинного цикла каждой выполняемой команды. При обнаружении значения INT= 1 при состоянии внутреннего триггера 1NTE = 1 микропроцессор приостанавливает выполнение текущей программы и переходит к выполнению подпрограммы обработки прерывания (ППОП), закончив которую возвращается к выполнению прерванной программы. Для реализации ввода-вывода по прерыванию требуются дополнительные аппаратные средства. Типичным примером ввода по прерыванию является ввод кода нажатой клавиши клавиатуры (частота нажатия клавиш невелика и потери времени при программном вводе с квитированием были бы необоснованно большими). Выполняются ППОП на фоне основной программы, что обеспечивает наиболее рациональное использование процессорного времени.
Одновекторные системы прерываний. На рис. 2.12 изображены структурные схемы МП-систем 8080 с обслуживанием одновекторных прерываний. Вектор прерывания — это адрес подпрограммы обработки прерывания или число, по которому этот адрес автоматически вычисляется микропроцессором. Подключение выхода INTA системного контроллера 8238 к источнику напряжения питания +12 В переводит его в режим выдачи в МП машинного кода FFh команды RST 7 в ответ на запрос прерывания IRQ = 1 по входу INT [10]. При приеме запроса прерывания (при условии, что командой EI предварительно было установлено значение сигнала INTE= 1) МП 8080 выдает в системный контроллер слово состояния SW8,10 = 0010x011 (см. табл. 1.15), младший разряд которого D0, = 1 блокирует системную шину данных, т. е. выборка команды RST 7 производится не из памяти команд программы, а из самого системного контроллера 8238. Формат команд RST n показан на рис. 2.13 — адрес вызова ППОП вычисляется автоматически и определяется числом 8 * п = ( 8 * 7 ) 10, = 56 1 0 = 3816.
На рис. 2.12, а изображена структурная схема МП-системы с обслуживанием по прерыванию одного внешнего устройства I/O - 0. Прием запросов прерывания IRQ = 1 возможен только после установки командой EI значения сигнала INTE = 1. Сразу после приема запроса прерывания МП сбрасывает сигнал 1NTE в 0, что используется для сброса в 0 сигнала IRQ. Таким образом, ввод-вывод по прерыванию определяется схемой:
IRQ ∫ => INTE I => IRQ I (аппаратное квитирование ввода-вывода).
=>SW8, 10 => RST 7 => ППОП по адресу addr = 0038h
(команда RST 7 поступает в МП по локальной шине данных из системного контроллера 8238).
a)
б)
Рис. 2.12. Одновекторные системы прерываний
D7 D6 D5 D4 D3 D2 D1 D0
1 |
1 |
n |
n |
n |
1 |
1 |
1 |
Рис. 2.13.Машинные коды команд RST n
Содержимое всех внутренних регистров МП, которые будут использоваться подпрограммой обработки прерывания, необходимо сохранить в оперативной памяти, а в само конце ППОП следует восстановить содержимое этих регистров. Для этих целей наиболее целесообразно использовать команды PUSH rp и POP rp, адресующие стек. Так как ввод и вывод данных при обработке прерываний от внешних устройств производится командами IN port и OUT port c использованием аккумулятора, то всегда следует сохранять и восстанавливать, по крайней мере, регистр PSW – аккумулятор и регистр признаков. Типовое оформление подпрограммы обработки прерывания при сохранении и восстановлении содержимого всех внутренних регистров МП приведено ниже:
; Начало подпрограммы обработки прерывания RST 7 с адресом вызова 7 х 8 = 56d =0038h
PUSH PSW ;Сохранение в стеке состояния прерванной (основной ) программы
PUSH H
PUSH D
PUSH B
; Собственно подпрограмма обработки прерывания
POP B ; Восстановление состояния прерванной программы
POP D
POP H
POP PSW
EI ; Разрешение прерываний ( INTE ← 1 )
RET ; Возврат в прерванную программу
На рис. 2.12, б показана структурная схема МП - системы с одновекторным обслуживанием по прерыванию восьми внешних устройств I/O – m (m=0…7) с восемью уровнями приоритета. При выдаче активного уровня сигнала запроса прерывания Im =0 хотя бы одним внешним устройством приоритетный шифратор PRCD вырабатывает активный уровень группового сигнала запроса прерывания GS = 0 и выдает двоичный код номера m = A2A1A0, внешнего устройства, имеющего наибольший приоритет из всех внешних устройств, одновременно запросивших обслуживание. Чем больше номер m входа Im у приоритетного шифратора 555ИВ1, тем выше приоритет этого входа.
Пример 1 (подпрограмма обслуживания прерывания, соответствующая рис.2.12,б):
PUSH PSW ; Сохранение в стеке состояния прерванной программы
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.