Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МСУзаочники2013 / Аппаратная база и программирование микропроцессорных систем управления.doc
Скачиваний:
37
Добавлен:
10.06.2015
Размер:
1.51 Mб
Скачать

Блок прерываний

Механизм прерываний позволяет автоматически реагировать на внешние и внутренние события (переполнение таймер/счетчиков, завершение последовательного обмена). Поступление запросов прерывания возможно от следующих источников: внешний вход INT0, таймер/счетчик T0, внешний вход INT1, таймер/счетчик T1, последовательный канал TI/RI.

Каждое из внешних прерываний INT0, INT1 может быть активизировано по уровню «0» или по фронту (переход из «1» в «0») сигналов на выводах Р3.2, Р3.3, что определяется состоянием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания INT0 или INT1 устанавливается флаг IE0 или IE1 регистра TCON. Установка этих флагов вызывает соответствующее прерывание. Очистка флагов IT0 и IT1 производится следующим образом:

  • при прерывании по фронту IT0 и IT1 сбрасываются аппаратно (автоматически) при обращении к соответствующей подпрограмме обработки прерываний;

  • при прерывании по уровню флаги очищаются при снятии запроса внешнего прерывания (т.е. IT0 и IT1 отслеживают состояние входов INT0 или INT1).

Прерывания от таймеров/счетчиков вызываются установкой флагов TF0 и TF1 регистра TCON, которые устанавливаются при переполнении соответствующих регистров таймер/счетчиков (за исключением режима 3). Очистка флагов TF0 и TF1 происходит аппаратно (автоматически) при переходе к подпрограмме обслуживания прерываний.

Прерывание от последовательного порта вызывается установкой флага запроса прерывания приемника RI или передатчика ТI в регистре SCON (см. табл. 3). В отличие от всех остальных флагов, RI и ТI сбрасываются только программным путем, обычно в программе обработки прерывания, где определяется по какому из флагов RI или ТI произошло прерывание.

Каждый из перечисленных источников прерываний может быть глобально или индивидуально разрешен, либо запрещен установкой или сбросом соответствующих битов регистра разрешения прерываний IE. Формат и описание регистра IE приведено в таблице 5.

Таблица.5.

Биты

7

6

5

4

3

2

1

0

Обозн.

ЕА

X

X

ЕS

ET1

EX1

ET0

EX0

  • ЕА – общее разрешение прерываний, если ЕА=0, то все прерывания запрещены; если ЕА=1, то прерывания могут быть разрешены индивидуальными разрешениями EX0, ET0, EX1, ET1 или ES;

  • ES – разрешение прерывания от последовательного порта;

  • ЕТ1 – разрешение прерывания от Т/С1;

  • ЕХ1 – разрешение прерывания от внешнего источника INT1;

  • ЕТ0 – разрешение прерывания от Т/С0;

  • ЕХ0 - разрешение прерывания от внешнего источника INT0;

  • Х – резервные разряды.

Для всех разрядов 1 – разрешение, 0 – запрещение.

Адреса размещения команд перехода на программы обработки прерывания (векторы прерывания) представлены в таблице 6.

Таблица.6

Источник прерывания

Вектор прерывания

Внешнее прерывание INT0

0003Н

Таймер/счетчик Т/С0

000ВН

Внешнее прерывание INT1

0013Н

Таймер/счетчик Т/С1

001ВН

Последовательный порт

0023Н

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

Таблица. 7.

Биты

7

6

5

4

3

2

1

0

Обозн.

Х

Х

Х

PS

PT1

PX1

PT0

PX0

  • PX0 – установка высшего приоритета прерыванию от внешнего источника INT0;

  • РТ0 – установка высшего приоритета прерыванию от таймера/счетчика Т/С0;

  • PX1 – установка высшего приоритета прерыванию от внешнего источника INT1;

  • РТ1 – установка высшего приоритета прерыванию от таймера/счетчика Т/С1;

  • PS - установка высшего приоритета прерыванию от последовательного порта;

  • Х – резерв.

Наличие в соответствующем разряде регистра IP «1» устанавливает для соответствующего источника высокий уровень приоритета, «0» - низкий уровень.

Программа обработки прерывания с низким уровнем приоритета может быть прервана запросом прерывания с высоким уровнем приоритета, но не может быть прервана другим запросом прерывания с низким уровнем приоритета. Программа обработки прерывания с высоким уровнем приоритета не может быть прервана никаким другим запросом прерывания. Если два запроса прерывания с разными приоритетами приняты одновременно, сначала будет обслужен запрос с высоким уровнем приоритета. Если одновременно приняты запросы с одинаковым уровнем приоритета, обработка их будет производиться в порядке, задаваемом последовательностью внутреннего опроса флагов прерываний. Таким образом, в пределах одного приоритетного уровня существует еще одна структура приоритетов (табл.8).

Таблица. 8

Источник

Приоритет внутри уровня

IE0 (внешний вход INT0)

высший

TF0 (таймер/счетчик 0)

IE1(внешний вход INT1)

TF1(таймер/счетчик 1)

RI+TI (последовательный канал)

низший

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