Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
150
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

13.3.3. Приоритеты прерываний

Каждому источнику прерываний можно программно присвоить один из двух уровней приоритета: низкий или высокий. Процедура ISR с низким приоритетом может быть прервана прерыванием с высоким приоритетом. Прерывание с высоким приоритетом не может быть прервано. Каждое прерывание имеет связанный с ним бит приоритета в регистрах SFR (IP-EIP2), используемый для настройки уровня приоритета. По умолчанию присваивается низкий приоритет. Если два прерывания происходят одновременно, прерывание с более высоким приоритетом обслуживается первым. Если оба прерывания имеют одинаковый приоритет, для арбитража используется фиксированный уровень приоритета, приведенный в табл.13.4.

13.3.4. Задержка обработки прерывания

Время реакции на прерывание зависит от состояния процессорного ядра в момент возникновения прерывания. Опрос флага прерывания и декодирование приоритета осуществляется каждый системный тактовый цикл. Поэтому, наименьшее возможное время реакции на прерывание составляет 5 тактовых циклов: 1 цикл для определения прерывания и 4 цикла для выполнения команды LCALL перехода к процедуре ISR. Если в момент выполнения команды RETI появляется прерывание, то до выполнения команды LCALL перехода на процедуру обслуживания этого прерывания будет исполнена одна команда основной программы. Поэтому максимальное время реакции на прерывание (если в настоящий момент не обслуживается другое прерывание или если новое прерывание имеет более высокий приоритет) будет тогда, когда выполняется команда RETI, а следом за ней должна выполняться команда DIV. В этом случае время реакции составляет 18 тактовых циклов: 1 цикл для определения прерывания, 5 циклов для выполнения команды RETI, 8 циклов для выполнения команды DIV и 4 цикла для выполнения команды LCALL перехода на процедуру ISR. Если выполняется процедура ISR для прерывания с равным или более высоким приоритетом, новое прерывание не будет обслужено до тех пор, пока не завершится текущая процедура ISR, включая команду RETI и следующую команду.

153

Ред. 1.2