Опубликован: 03.03.2010 | Уровень: специалист | Доступ: платный | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 14:

Архитектура однокристального микроконтроллера

< Лекция 13 || Лекция 14: 12345 || Лекция 15 >

Основные функциональные блоки микроконтроллера МК-51 Система прерываний

Системы прерываний - важная часть любой управляющей системы.

От ее работы во многом зависит то, насколько эффективно микропроцессорная система выполняет свои функции. Общая структура системы прерываний МК-51 представлена на рис. 14.3.

Структура системы прерываний

Рис. 14.3. Структура системы прерываний

Микроконтроллеры семейства МК-51 обеспечивают поддержку пяти источников прерываний:

  • двух внешних прерываний, поступающих по входам INT0 и INT1 (линии порта Р3: Р3.2 и Р3.3 соответственно);
  • двух прерываний от таймеров/счетчиков Т/С0 и Т/С1;
  • прерывание от последовательного порта.

Запросы на прерывание фиксируются в регистрах специальных функций микроконтроллера: флаги IE0, IE1, TF0, TF1 запросов на прерывание от INT0, INT1, T/C0 и T/C1 содержатся в регистре управления TCON (табл. 14.4), а флаги RI и TI запросов на прерывание от последовательного порта - в регистре SCON управления последовательным портом.

Таблица 14.4. Формат регистра TCON
Позиция в регистре Мнемоника бита Функция
0 IT0 Настройка вида прерывания INT0
1 IE0 Флаг запроса прерывания INT0
2 IT1 Настройка вида прерывания INT1
3 IE1 Флаг запроса прерывания INT1
4 TR0 Включение в работу таймера/счетчика 0
5 TF0 Флаг переполнения (запрос прерывания)таймера/счетчика 0
6 TR1 Включение в работу таймера/счетчика 1
7 TF1 Флаг переполнения (запрос прерывания)таймера/счетчика 1

Флаги TF0 и TF1 устанавливаются аппаратно при переполнении соответствующего таймера/счетчика (точнее, при переходе T/Cx из состояния "все единицы" в состояние "все нули").

Флаги IE0 и IE1 устанавливаются аппаратно от внешних прерываний IT0 и IT1 соответственно. Внешний запрос может вызвать установку флага либо при низком уровне сигнала на соответствующем входе, либо при переключении этого сигнала с высокого уровня на низкий (с частотой, не превышающей половины частоты внешней синхронизации МК).

Настройка на тип запроса осуществляется программной установкой бит IT0 и IT1 в регистре управления TCON. Установка ITx = 0 настраивает систему прерывания на запрос по низкому уровню сигнала, ITx = 1 - запрос на прерывание по спаду сигнала.

Флаги TI и RI устанавливаются аппаратно схемой последовательного интерфейса после окончания передачи или после окончания приема соответственно.

Все указанные флаги запросов на прерывание программно доступны для установки и сброса. Программная установка флага запроса на прерывание приводит к такой же реакции микроконтроллера, что и аппаратная установка того же самого флага.

Флаги TF0 и TF1 сбрасываются аппаратно при передаче управления программе обработки соответствующего прерывания.

Сброс флагов IEx выполняется аппаратно при обслуживании прерывания только в том случае, если прерывание было настроено на восприятие спада сигнала INTx. Если прерывание было настроено на восприятие уровня сигнала запроса, то сброс флага IEx должна выполнять программа обслуживания прерывания, воздействуя на источник прерывания для снятия им запроса.

Флаги TI и RI сбрасываются только программным путем.

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

Таблица 14.5. Назначение разрядов регистра IE
Позиция в регистре Мнемоника бита Функция
7 EA апрет прерывания от всех источников
6 - Не используется
5 - Не используется
4 ES Запрет прерывания от последовательного порта
3 ET1 Запрет прерывания от таймера/счетчика T/C1
2 EX1 Запрет прерывания от внешнего источника INT1
1 ET0 Запрет прерывания от таймера/счетчика T/C0
0 EX0 Запрет прерывания от внешнего источника INT0

Каждому виду прерывания может быть программно присвоен один из двух возможных приоритетов: 0 - низший или 1 - высший.

Настройка приоритетов осуществляется установкой или сбросом соответствующего бита регистра приоритетов прерываний IP. Формат этого регистра приведен в табл. 14.6.

При одновременном поступлении запросов прерывания от источников, имеющих различные приоритеты, сначала обрабатывается запрос от более приоритетного источника.

В случае одновременного поступления нескольких запросов на прерывания с одинаковым приоритетом порядок их обработки определяется аппаратными средствами микроконтроллера и не может быть изменен программно. Этот порядок соответствует последовательности опроса флагов запросов прерываний, имеющей следующий вид:

IT0 -> TF0 -> IT1 -> TF1 -> (RI, TI)

Таблица 14.6. Назначение разрядов регистра IP
Позиция в регистре Мнемоника бита Функция
7 - Не используется
6 - Не используется
5 - Не используется
4 PS Приоритет прерыванияот последовательного порта
3 PT1 Приоритет прерывания от таймера/счетчика T/C1
2 PX1 Приоритет прерыванияот внешнего источника INT1
1 PT0 Приоритет прерывания от таймера/счетчика T/C0
0 PX0 Приоритет прерыванияот внешнего источника INT0

Аппаратно реализуемый вызов обработчика прерываний состоит из следующих действий:

  • сохранение значения программного счетчика в стеке;
  • загрузка в программный счетчик начального адреса точки входа в соответствующий обработчик прерывания.

Точки входа в обработчик прерывания для каждого источника прерываний аппаратно зафиксированы. Их значения приведены в табл. 14.7.

Таблица 14.7. Адреса точек входа в обработчики прерываний
Источник прерывания Адреса точек входа в обработчики прерываний
Внешнее прерывания( ITO ) 03h
Таймер-счетчик( TFO ) 0Bh
Внешнее прерывания( IT1 ) 13h
Таймер-счетчик( TF1 ) 1Bh
Последовательный порт( R1 или T1 ) 23h

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

При переходе на подпрограмму обработки прерывания автоматически независимо от состояния регистра IE запрещаются все прерывания, которые имеют уровень приоритета, равный уровню приоритета обслуживаемого прерывания, - то есть вложенные прерывания с равным уровнем приоритета запрещены. Таким образом, низкоприоритетное прерывание (имеющее "0" в соответствующем разряде регистра IP ) может прерываться высокоприоритетным (имеющим "1" в соответствующем разряде регистра IP ), но не низкоприоритетным. Обслуживание высокоприоритетного прерывания не может быть прервано другим источником.

Возврат из обработчика прерываний осуществляется с помощью команды RETI, которая восстанавливает из стека значение программного счетчика PC, сохраненного там в момент вызова обработчика прерывания, и логику приоритетов прерываний.

< Лекция 13 || Лекция 14: 12345 || Лекция 15 >
Владислав Салангин
Владислав Салангин

приветствую создателей курса и благодарю за доступ к информации! понимаю, что это уже никто не исправит, но, возможно, будут следующие версии и было бы неплохо дать расшифровку сокращений имен регистров итд, дабы закрепить понимание их роли в общем процессе. 

Михаил Королёв
Михаил Королёв

Ирина Ткаченко
Ирина Ткаченко
Россия, Москва
Николай Ткаченко
Николай Ткаченко
Россия