Блок прерываний микроконтроллера MCS-51
Система прерываний
Прерывание - приостановка выполнения процессором текущей программы с целью обработки запроса прерывания.
Запрос прерывания - сигнал от внутреннего или внешнего периферийного устройства с целью выполнения программы обработки прерывания.
Программа обработки прерывания - заранее подготовленная и записанная в памяти программа, выполнение которой осуществляется по запросу прерывания и которая запускается через вектор прерывания.
Вектор прерывания – адрес в начальной зоне адресов памяти программ, с которого размещается или программа обработки прерывания или команда перехода на нее.
Приоритет прерывания – предпочтение в обработке одного запроса прерывания над другим. При одновременном поступлении двух запросов первым будет обрабатываться запрос, имеющий более высокий приоритет. При поступлении запроса во время обработки другого прерывания запрос фиксируется, а обработка производится после завершения программы первого прерывания.
Запросу прерывания программно может быть назначен наивысший приоритет, он обрабатывается в первую очередь и может прервать обработку ранее поступившего запроса прерывания.
Разрешение прерывания. Каждое прерывание может быть запрещено или разрешено программно. Если прерывание запрещено, то обработки соответствующего запроса не производится. Могут быть запрещены сразу все прерывания.
Источники прерываний микроконтроллера и организация приоритетов между ними приведены на рис. 17.
Источники прерываний: § внешний вход INT0 (контакт процессора, к которому может быть подключено внешнее устройство); § таймер/счетчик T0 (при переполнении считающего элемента – TF0); § внешний вход INT1 (контакт процессора, к которому может быть подключено внешнее устройство); § таймер/счетчик T1 (при переполнении считающего элемента – TF1); § последовательный канал TI/RI (при завершении передачи или приема байта по последовательным линиям). | Базовая расстановка приоритетов |
Рис.17. Источники прерываний микроконтроллера
Настройка приема запросов прерывания от внешних устройств (INT0 и INT1) осуществляется с помощью регистра TCON (биты 0-3 в табл.3).
Таблица 3
Биты | ||||||||
Обозн | IE1 | IT1 | IE0 | IT0 |
Здесь IE0, IE1 – флаги запроса внешних прерываний по входам INT0, INT1. Биты сбрасываются и устанавливаются аппаратно и программно.
IT0, IT1 – биты, определяющие вид прерывания по входам INT0, INT1. IT=0 – прерывание по низкому уровню (рис18 а); IT = 1 – прерывание по фронту (переход из 1 в 0) (рис18 б). Биты устанавливаются и сбрасываются программно.
При прерывании по фронту IT0 и IT1 сбрасываются аппаратно (автоматически) при обращении к соответствующей подпрограмме обработки прерываний. При прерывании по уровню флаги очищаются при снятии запроса внешнего прерывания (т.е. IT0 и IT1 отслеживают состояние входов INT0 или INT1).
а) | б) |
Рис.18. Момент фиксации запроса прерывания