Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1-35.docx
Скачиваний:
13
Добавлен:
11.07.2022
Размер:
651.81 Кб
Скачать
  1. Службы реального времени микропроцессора к1816ве48. Система прерываний от внешнего источника запросов.

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

Реакция МС на событие завершается возвратом к основной программе. Так как состав и моменты возникновения этих событий заранее не известны, то процессы их обслуживания не могут быть учтены при составлении основной программы и должны выполняться параллельно и скрытно для нее. Процесс обслуживания событий называется прерыванием программы.

Каждое прерывающее программу событие сопровождается генерацией специального сигнала IRQi (Interrupt Request), i = 0, 1, ..., который называется радиальным запросом прерывания, а вызываемые им программы – программами обслуживания прерываний.

Аппаратные и программные средства, ответственные за организацию прерываний, образуют систему прерываний. Часто в процессе связывания запроса на прерывание с программой его обслуживания участвует не только ЦП, но и периферийные модули МС.

В этом случае ЦП получает общий сигнал запроса на прерывание INTR, называемый векторным запросом и свидетельствующий о появлении одного или нескольких радиальных запросов IRQi, и переходит к выполнению специального машинного цикла — цикла ввода вектора прерывания. Этот цикл состоит во вводе некоторой информации, однозначно связанной с номером i радиального запроса IRQi, которая используется ЦП для перехода к соответствующей программе обслуживания.

В общем случае можно считать, что цикл ввода вектора прерываний подобен обычному циклу ввода данных, за исключением того, что сигнал IORC заменяется стробом подтверждения прерывания INTA (Interrupt Acknowledge). Это еще один типовой сигнал, входящий в состав шины СВ.

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

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

  1. Службы реального времени микропроцессора к1816ве48. Система прерываний от таймера.

При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Этот обработчик каждый раз увеличивает на единицу текущее значение 4-байтовой переменной, располагающейся в области данных BIOS по адресу 0000:046Ch - счетчик таймера. Если этот счетчик переполнится из-за того что прошло более 24 часов с момента запуска таймера, в ячейку 0000:0470h заносится значение 1.

Другое действие, выполняемое стандартным обработчиком прерывания таймера - контроль за работой двигателей НГМД. Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель. Ячейка с адресом 0000:0440h содержит время, оставшееся до выключения двигателя. Это время постоянно уменьшается обработчиком прерывания таймера. Когда оно становится равно 0, двигатель НГМД отключается.

Последнее действие, которое выполняет обработчик прерывания таймера - вызов прерывания INT 1Ch. После инициализации системы вектор INT 1Ch указывает на команду IRET, то есть обработчик прерывания INT 1Ch ничего не делает. Программа может установить собственный обработчик этого прерывания для того чтобы выполнять какие-либо периодические действия.

Необходимо отметить, что прерывание INT 1Ch вызывается обработчиком прерывания INT 8h до сброса контроллера прерывания, поэтому во время выполнения прерывания INT 1Ch все аппаратные прерывания запрещены. В частности, запрещены прерывания от клавиатуры.

Обработчик прерывания INT 1Ch должен заканчиваться командой IRET. Если же вы подготавливаете собственный обработчик для прерывания INT 8h, перед завершением его работы необходимо сбросить контроллер прерываний. Это можно сделать, например, так:

mov al, 20h

out 20h, al

Таймер обычно реализуется на микросхеме Intel 8253 (для компьютеров IBM PC и IBM PC/XT) или 8254 (для компьютеров IBM PC/AT и IBM PS/2), а также на аналогах этих микросхем. Следующий раздел книги посвящен описанию микросхемы 8254.

Мы не будем подробно рассказывать о всех возможностях микросхем 8253 и 8254, так как обычно используются только несколько режимов работы (а чаще всего один). Полное описание вы сможете найти в справочной литературе по микросхемам 8253/8254, а также по их отечественным аналогам КР1810ВИ53 и КР1810ВИ54.

Соседние файлы в предмете Основы мехатроники