F20-23 (1041603), страница 23
Текст из файла (страница 23)
(Флаг прерыванияустанавливается в 1 независимо от того, разрешены прерывания или запрещены).Прерывание от каждого источника прерываний может быть разрешено или запрещено с помощьюсоответствующих битов разрешения прерываний в регистрах SFR (IE-EIE2). Однако, сначала прерываниянеобходимо разрешить глобально установкой в 1 бита EA (IE.7), только после этого состояние индивидуальныхфлагов разрешения прерываний будет учтено. Сброс в 0 бита ЕА запрещает прерывания от всех источниковпрерываний независимо от состояния индивидуальных флагов разрешения прерываний.Некоторые флаги прерываний сбрасываются автоматически аппаратными средствами при переходе кпроцедуре ISR.
Однако большинство флагов прерываний не сбрасываются аппаратно и должны быть сброшеныпрограммно до возвращения из процедуры ISR. Если флаг прерывания остается установленным послезавершения выполнения команды возврата из прерывания (RETI), то сразу же будет сгенерирован новый запроспрерывания и после завершения выполнения следующей команды произойдет повторный переход к процедуреISR.12.3.1. Источники и векторы прерыванийДанное семейство МК поддерживает 22 источника прерываний. Программа может симулироватьпрерывание установкой в 1 любого флага прерывания. Если прерывание для этого флага разрешено, будутсгенерирован запрос прерывания и произойдет переход по адресу процедуры ISR, связанной с этим флагомпрерывания. Источники прерываний МК, соответствующие им адреса прерываний, уровень приоритета и битыуправления перечислены в таблице 12.4.
Подробная информация относительно условий возникновенияпрерываний от периферийных модулей и поведения их флагов прерываний приведена в разделах данногоруководства, посвященных работе соответствующих периферийных модулей.12.3.2. Внешние прерыванияДва внешних источника прерываний (/INT0 и /INT1) настраиваются как входы с низким активнымуровнем, чувствительные к уровню или к фронту сигнала, в зависимости от состояния битов IT0 (TCON.0) иIT1 (TCON.2). Биты IE0 (TCON.1) и IE1 (TCON.3) служат флагами прерываний для внешних прерываний /INT0и /INT1 соответственно. Если вход /INT0 или /INT1 настроен как чувствительный к фронту, тосоответствующий флаг прерывания автоматически сбрасывается аппаратными средствами при переходе кпроцедуре ISR.
Если вход /INT0 или /INT1 настроен как чувствительный к уровню, то соответствующий флагпрерывания отслеживает состояние входного вывода внешнего прерывания. Внешний источник прерываниядолжен удерживать на этом входе активный уровень до тех пор, пока запрос прерывания не будет распознан.Затем необходимо деактивировать запрос прерывания до окончания выполнения процедуры ISR, иначе будетсгенерирован другой запрос прерывания.Остальные два внешних прерывания (внешние прерывания 6-7) являются чувствительными к фронтусигнала входами, которые можно настроить на использование низкого или высокого активного уровня.Соответствующие им флаги прерываний и биты настройки размещены в регистре флагов прерываний отпорта 3 (см.
рис.17.19).Ред. 1.4116C8051F020/1/2/3СбросВнешнее прерывание 0(/INT0)ПереполнениеТаймера 0Внешнее прерывание 1(/INT1)ПереполнениеТаймера 1Последовательныйпорт УАПП0ПереполнениеТаймера 2 (или EXF2)0x0000ФлагпрерыванияНаиНетвысшийБитоваяадресация ?Аппаратныйсброс ?ВекторИсточник прерывания прерыванияПриоритетТаблица 12.4. Источники прерыванийБит разрешенияN/A N/A Разрешен всегдаУправлениеприоритетомВсегданаивысший0x00030IE0 (TCON.1)YYEX0 (IE.0)PX0 (IP.0)0x000B1TF0 (TCON.5)YYET0 (IE.1)PT0 (IP.1)0x00132IE1 (TCON.3)YYEX1 (IE.2)PX1 (IP.2)0x001B3TF1 (TCON.7)YYET1 (IE.3)PT1 (IP.3)0x00234RI0 (SCON0.0)TI0 (SCON0.1)YES0 (IE.4)PS0 (IP.4)0x002B5TF2 (T2CON.7)YET2 (IE.5)PT2 (IP.5)Модуль SPI0x00336YESPI0 (EIE1.0)PSPI0 (EIP1.0)Модуль SMBusДетектор диапазонаАЦП00x003B7Y0x00438ESMB0 (EIE1.1)EWADC0(EIE1.2)PSMB0 (EIP1.1)PWADC0(EIP1.2)0x004B9EPCA0 (EIE1.3)PPCA0 (EIP1.3)0x005310ECP0F (EIE1.4)PCP0F (EIP1.4)0x005B11ECP0R (EIE1.5)PCP0R (EIP1.5)0x006312ECP1F (EIE1.6)PCP1F (EIP1.6)0x006B13ECP1R (EIE1.7)PCP1R (EIP1.7)0x007314ET3 (EIE2.0)PT3 (EIP2.0)0x007B15EADC0 (EIE2.1)PADC0 (EIP2.1)0x008316ET4 (EIE2.2)PT4 (EIP2.2)0x008B17EADC1 (EIE2.3)PADC1 (EIP2.3)0x00930x009B1819EX6 (EIE2.4)EX7 (EIE2.5)PX6 (EIP2.4)PX7 (EIP2.5)0x00A320ES1PS10x00AB21EXVLD (EIE2.7)PXVLD (EIP2.7)Программируемыймассив счетчиков 0Спадающий фронткомпаратора 0Нарастающий фронткомпаратора 0Спадающий фронткомпаратора 1Нарастающий фронткомпаратора 1ПереполнениеТаймера 3Завершениепреобразования АЦП0ПереполнениеТаймера 4Завершениепреобразования АЦП1Внешнее прерывание 6Внешнее прерывание 7Последовательныйпорт УАПП1Готовность внешнегокварцевого генератора117SPIF(SPI0CN.7)SI (SMB0CN.3)AD0WINT(ADC0CN.2)CF(PCA0CN.7)CCFn(PCA0CN.n)CP0FIF(CPT0CN.4)CP0RIF(CPT0CN.5)CP1FIF(CPT1CN.4)CP1RIF(CPT1CN.5)TF3(TMR3CN.7)AD0INT(ADC0CN.5)TF4 (T4CON.7)AD1INT(ADC1CN.5)IE6 (P3IF.5)IE7 (P3IF.6)RI1 (SCON1.0)TI1 (SCON1.1)XTLVLD(OSCXCN.7)Ред.
1.4YYYC8051F020/1/2/312.3.3. Приоритеты прерыванийКаждому источнику прерываний можно программно присвоить один из двух уровней приоритета:низкий или высокий. Процедура ISR с низким приоритетом может быть прервана прерыванием с высокимприоритетом. Прерывание с высоким приоритетом не может быть прервано. Каждое прерывание имеетсвязанный с ним бит приоритета в регистрах SFR (IP-EIP2), используемый для настройки уровня приоритета.По умолчанию присваивается низкий приоритет. Если два прерывания происходят одновременно, прерывание сболее высоким приоритетом обслуживается первым.
Если оба прерывания имеют одинаковый приоритет, дляарбитража используется фиксированный уровень приоритета, приведенный в табл.12.4.12.3.4. Задержка обработки прерыванияВремя реакции на прерывание зависит от состояния процессорного ядра в момент возникновенияпрерывания. Опрос флага прерывания и декодирование приоритета осуществляется каждый системныйтактовый цикл. Поэтому, наименее возможное время реакции на прерывание составляет 5 тактовых циклов: 1цикл для определения прерывания и 4 цикла для выполнения команды LCALL перехода к процедуре ISR.
Еслив момент выполнения команды RETI появляется прерывание, то до выполнения команды LCALL перехода напроцедуру обслуживания этого прерывания будет исполнена одна команда основной программы. Поэтомумаксимальное время реакции на прерывание (если в настоящий момент не обслуживается другое прерываниеили если новое прерывание имеет более высокий приоритет) будет тогда, когда выполняется команда RETI, аследом за ней должна выполняться команда DIV. В этом случае время реакции составляет 18 тактовых циклов:1 цикл для определения прерывания, 5 циклов для выполнения команды RETI, 8 циклов для выполнениякоманды DIV и 4 цикла для выполнения команды LCALL перехода на процедуру ISR. Если выполняетсяпроцедура ISR для прерывания с равным или более высоким приоритетом, новое прерывание не будетобслужено до тех пор, пока не завершится текущая процедура ISR, включая команду RETI и следующуюкоманду.Ред.
1.4118C8051F020/1/2/312.3.5. Описания регистров прерыванийРегистры SFR, используемые для разрешения/запрещения источников прерываний и установки ихприоритетов, описаны ниже. Подробная информация относительно условий возникновения прерываний отпериферийных модулей и поведения их флагов прерываний приведена в разделах данного руководства,посвященных работе соответствующих периферийных модулей.Рисунок 12.9. IE: Регистр разрешения прерыванийR/WEAБит 7Значениепри сбросе:R/WIEGF0R/WET2R/WES0R/WET1R/WEX1R/WET0R/WEX0Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес:(доступен в битовомрежиме адресации)0xA800000000Бит 7: EA: Бит разрешения всех прерываний.Это бит глобально разрешает/запрещает все прерывания. Будучи сброшенным в 0, он перекрываетиндивидуальные маски прерываний0: Все источники прерываний запрещены.1: Каждое прерывание разрешено/запрещено в соответствии с его индивидуальной маской.Бит 6: IEGF0: Флаг общего назначения 0.Это флаг общего назначения, предназначенный для использования под управлением программы.Бит 5: ET2: Бит разрешения прерывания от Таймера 2.Этот бит устанавливает маскирование прерывания от Таймера 2.0: Все прерывания от Таймера 2 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF2 (T2CON.7)Бит 4: ES0: Бит разрешения прерываний от последовательного порта УАПП0.Этот бит устанавливает маскирование прерывания от последовательного порта УАПП0.0: Прерывания от УАПП0 запрещены.1: Прерывания от УАПП0 разрешены.Бит 3: ET1: Бит разрешения прерывания от Таймера 1.Этот бит устанавливает маскирование прерывания от Таймера 1.0: Все прерывания от Таймера 1 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF1 (TCON.7).Бит 2: EX1: Бит разрешения внешнего прерывания 1.Этот бит устанавливает маскирование внешнего прерывания 1.0: Внешнее прерывание 1 запрещено.1: Разрешены запросы прерываний, генерируемые сигналом на выводе /INT1.Бит 1: ET0: Бит разрешения прерывания от Таймера 0.Этот бит устанавливает маскирование прерывания от Таймера 0.0: Все прерывания от Таймера 0 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF0 (TCON.5).Бит 0: EX0: Бит разрешения внешнего прерывания 0.Этот бит устанавливает маскирование внешнего прерывания 0.0: Внешнее прерывание 0 запрещено.1: Разрешены запросы прерываний, генерируемые сигналом на выводе /INT0.119Ред.