Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие по АТ89С51 изд.вариант 2010-54.doc
Скачиваний:
121
Добавлен:
19.11.2019
Размер:
865.22 Кб
Скачать
      1. Контроллер прерываний

Контроллер прерываний (IC) принимает и обрабатывает запросы прерывания от внешних и внутренних источников запросов. В состав контроллера прерываний входят регистры специальных функций IE и IР и младшая половина разрядов регистра TCON (TCON.3–0). Схемы распределения разрядов в регистрах IE, IP и TCON представлены на рисунке 1.13.

7

6

5

4

3

2

1

0

EA

ES

ET1

EX1

ET0

EX0

а)

7

6

5

4

3

2

1

0

PS

PT1

PX1

PT0

PX0

б)

7

6

5

4

3

2

1

0

IE1

IT1

IE0

IT0

в)

а) регистр IE; б) регистр IP; в) регистр TCON

Рисунок 1.13 – Схемы распределения разрядов в регистрах IE, IP и TCON

Сигналы запросов прерывания от внешних источников INT0 и INT1 поступают на входы порта Р3.2 и Р3.3 соответственно. Запрос прерывания представлен или низким уровнем сигнала INT0 (INT1), или переходом сигнала INT0 (INT1) от высокого уровня к низкому уровню. Запрос прерывания представлен уровнем сигнала при TCON.0=IT0=0 (TCON.2=IТ1=0). При IT0=1 (IT1=1) запрос представлен отрицатель­ным перепадом сигнала.

При поступлении запроса прерывания на входы INT0 или INT1 устанавливается в единичное состояние разряд TCON.1=IE0 или TCON.3=IЕ1 соответственно. Если запрос прерывания представлен переходом сигнала, разряд IE0 (IE1) сбрасывается в нулевое состояние автоматически при переходе микроконтроллера к выполнению соответствующей прерывающей программы. Если запрос прерывания представлен уровнем сигнала, состоянием разряда IЕ0 (IЕ1) управляет внешний сигнал INT0 (INT1).

Запросы прерывания от внутренних источников запросов: от таймера-счетчика Т/С0, таймера-счетчика Т/С1, передатчика и приемника последовательного порта – представлены единичным значением сигналов, поступающих из разрядов регистров TCON.5=TF0, TCON.7=TF1, SCON.1=TI и SCON.0=RI соответственно. Сигналы запросов прерывания от передатчика (TI) и приемника (RI) последовательного порта объединены по схеме логического ИЛИ на входе контроллера прерываний.

С использованием разрядов регистра IE разрешается или запрещается прием запросов прерывания в контроллер прерываний. Каждому запросу соответствует свой разряд регистра. Биты ET0, ET1 соответствуют запросам прерываний от таймеров, биты EX0, EX1 – запросам прерывания от внешних источников, бит ES – от последовательного порта. При IЕ.Х=0 (Х=0, 1,..., 4) прием соответствующего запроса запрещается, при IЕ.Х=1 – разрешается. С использованием разряда IE.7=ЕА запрещается прием любого запроса прерывания (при ЕА=0).

В контроллере прерываний реализованы два уровня приоритета – высший и низший. Любой запрос прерывания может быть отнесен к любому из уровней. Отнесение запроса прерывания к уровню приоритета выполняется с использованием разрядов регистра IР (соответствие битов совпадает с регистром IE, см. выше). Каждому запросу прерывания соответствует свой разряд регистра. При IР.Х=0 (X=0, 1,..., 4) запрос относится к низшему уровню, при IР.X=1 – к высшему уровню.

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

В таблице 1.4 перечислены сигналы запросов прерывания, для каждого сигнала указано устройство-источник запроса прерывания, указан приоритет запросов при отнесении их к одному уровню и приведен вектор прерывания (начальный адрес прерывающей программы) для каждого запроса прерывания.

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

Таблица 1.4 – Описание прерываний микроконтроллера

Сигнал запроса прерывания

Устройство-источник

Приоритет

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

INT0

Внешний

1 (высший)

0003H

TF0

Т/С0

2

000BH

INT1

Внешний

3

0013Н

TF1

Т/С1

4

001BH

TI+RI

SP

5 (низший)

0023Н

При одновременном поступлении нескольких запросов прерывания для обслуживания выбирается запрос высшего уровня, а в пределах уровня – запрос с высшим приоритетом в пределах уровня.

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

Контрольные вопросы

  1. Какие периферийные устройства входят в состав микроконтроллера?

  1. Какие функции, кроме непосредственного ввода-вывода, выполняет порт P3?

  2. Что является источником счетных импульсов для таймеров-счетчиков?

  3. Опишите режимы работы таймеров счетчиков ТC0 и TC1, если в регистр TMOD загружено значение 2BH?

  4. В каких режимах может работать последовательный порт?

  5. Возможен ли в режиме асинхронного приемо-передатчика одновременный прием и выдача символа?

  6. Какие числа необходимо загрузить в TH0 и TL0, чтобы в режиме 1 осуществлялся обмен со скоростью 19200 бит/с при частоте резонатора 18,432 МГц (SMOD=1)?

  7. Какова максимально допустимая скорость передачи для данного микроконтроллера?

  8. Каков алгоритм приема и передачи символов при условии, что контроллер прерывания не используется?

  9. Что такое «прерывание»?

  10. Какие устройства микроконтроллера могут являться источниками запросов прерываний?

  11. Что необходимо для разрешения и запрещения прерываний?

  12. Что означает понятие «приоритет»? Перечислите в порядке возрастания приоритетов источники, если в регистр IP загружено число 13H?

  13. Каким образом временно запретить обработку всех прерываний?

  14. Что означает понятие «вектор прерывания»?