F18-19 (1041602), страница 13
Текст из файла (страница 13)
ACC: АккумуляторR/WACC.7R/WACC.6R/WACC.5R/WACC.4R/WACC.3R/WACC.2Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2R/WACC.1Бит 1R/WACC.0Бит 0(доступен в битовомрежиме адресации)Значениепри сбросе:00000000SFR Адрес:0xE0Биты 7-0: ACC: АккумуляторЭтот регистр является аккумулятором для арифметических операций.Рисунок 8.8.
B: Регистр BR/WB.7Бит 7R/WB.6R/WB.5R/WB.4R/WB.3R/WB.2R/WB.1R/WB.0Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0(доступен в битовомрежиме адресации)Значениепри сбросе:00000000SFR Адрес:0xF0Биты 7-0: B: Регистр BЭтот регистр работает в качестве второго аккумулятора для точных арифметических операций.Ред. 1.258C8051F018C8051F0198.4. ОБРАБОТКА ПРЕРЫВАНИЙCIP-51 имеет развитую систему прерываний, поддерживающую в общей сложности 22 источникапрерываний с двумя уровнями приоритета. Распределение источников прерываний между встроеннымипериферийными модулями и внешними входными выводами для каждого типа МК различно.
Каждый источникпрерываний имеет один или несколько связанных с ним флагов прерываний, размещенных в SFR. Когдапериферийный модуль или внешний источник прерываний регистрирует событие, удовлетворяющее условиюпрерывания, соответствующий флаг прерывания устанавливается в 1.Если прерывание от источника прерываний разрешено, то при установке флага прерываниягенерируется запрос прерывания.
Как только выполнение текущей команды завершится, будет сгенерированакоманда LCALL перехода по предопределенному адресу, откуда начнется исполнение процедурыобслуживания прерывания (interrupt service routine - ISR). Каждая ISR должна заканчиваться командой RETI,которая возвращает управление прерванной программе и приводит к выполнению той команды, котораяисполнилась бы, если бы запроса прерывания не было. Если прерывания не разрешены, флаг прерыванияигнорируется и выполнение программы продолжается в нормальном режиме.
(Флаг прерыванияустанавливается в 1 независимо от того, разрешены прерывания или запрещены).Прерывание от каждого источника прерываний может быть разрешено или запрещено с помощьюсоответствующих битов разрешения прерываний в регистрах SFR (IE-EIE2). Однако, сначала прерываниянеобходимо разрешить глобально установкой в 1 бита EA (IE.7), только после этого состояние индивидуальныхфлагов разрешения прерываний будет учтено. Сброс в 0 бита ЕА запрещает прерывания от всех источниковпрерываний независимо от состояния индивидуальных флагов разрешения прерываний.Некоторые флаги прерываний сбрасываются автоматически аппаратными средствами при переходе кпроцедуре ISR. Однако большинство флагов прерываний не сбрасываются аппаратно и должны быть сброшеныпрограммно до возвращения из процедуры ISR.
Если флаг прерывания остается установленным послезавершения выполнения команды возврата из прерывания (RETI), то сразу же будет сгенерирован новый запроспрерывания и после завершения выполнения следующей команды произойдет повторный переход к процедуреISR.8.4.1. Источники и векторы прерыванийМК закрепляет 12 источников прерываний за встроенными периферийными модулями. В зависимостиот конфигурации портов ввода/вывода МК доступны до 10 дополнительных внешних источников прерываний.Программа может симулировать прерывание установкой в 1 любого флага прерывания. Если прерывание дляэтого флага разрешено, будут сгенерирован запрос прерывания и произойдет переход по адресу процедуры ISR,связанной с этим флагом прерывания.
Источники прерываний МК, соответствующие им адреса прерываний,уровень приоритета и биты управления перечислены в таблице 8.4. Подробная информация относительноусловий возникновения прерываний от периферийных модулей и поведения их флагов прерываний приведена вразделах данного руководства, посвященных работе соответствующих периферийных модулей.8.4.2. Внешние прерыванияДва внешних источника прерываний (/INT0 и /INT1) настраиваются как входы с низким активнымуровнем, чувствительные к уровню или к фронту сигнала, в зависимости от состояния битов IT0 (TCON.0) иIT1 (TCON.2).
Биты IE0 (TCON.1) и IE1 (TCON.3) служат флагами прерываний для внешних прерываний /INT0и /INT1 соответственно. Если вход /INT0 или /INT1 настроен как чувствительный к фронту, тосоответствующий флаг прерывания автоматически сбрасывается аппаратными средствами при переходе кпроцедуре ISR. Если вход /INT0 или /INT1 настроен как чувствительный к уровню, то соответствующий флагпрерывания отслеживает состояние входного вывода внешнего прерывания. Внешний источник прерываниядолжен удерживать на этом входе активный уровень до тех пор, пока запрос прерывания не будет распознан.Затем необходимо деактивировать запрос прерывания до окончания выполнения процедуры ISR, иначе будетсгенерирован другой запрос прерывания.Остальные четыре внешних прерывания (внешние прерывания 4-7) являются чувствительными кфронту сигнала входами с низким активным уровнем. Соответствующие им флаги прерываний размещены врегистре флагов прерываний от порта 1 (см.
рис. 13.10).59Ред. 1.2C8051F018C8051F019Таблица 8.4. Источники прерыванийВекторпрерывания0x00000x00030x000B0x00130x001B0x0023ПриоритетФлаг прерыванияНаивысший01234Переполнение Таймера 2 (или EXF2)Модуль SPIМодуль SMBus0x002B0x00330x003B567Детектор диапазона АЦП00x00438Программируемый массивсчетчиков 0Спадающий фронт компаратора 0Нарастающий фронт компаратора 0Спадающий фронт компаратора 1Нарастающий фронт компаратора 1Переполнение Таймера 30x004B90x00530x005B0x00630x006B0x00731011121314Завершение преобразования АЦП00x007B15Внешнее прерывание 4Внешнее прерывание 5Внешнее прерывание 6Внешнее прерывание 7Неиспользуемое прерываниеГотовность внешнего кварцевогогенератора0x00830x008B0x00930x009B0x00A316171819200x00AB21НетIE0 (TCON.1)TF0 (TCON.5)IE1 (TCON.3)TF1 (TCON.7)RI (SCON.0)TI (SCON.1)TF2 (T2CON.7)SPIF (SPI0CN.7)SI (SMB0CN.3)ADWINT(ADC0CN.2)CF (PCA0CN.7)CCFn (PCA0CN.n)CP0FIF (CPT0CN.4)CP0RIF (CPT0CN.5)CP1FIF (CPT1CN.4)CP1RIF (CPT1CN.5)TF3 (TMR3CN.7)ADCINT(ADC0CN.5)IE4 (PRT1IF.4)IE5 (PRT1IF.5)IE6 (PRT1IF.6)IE7 (PRT1IF.7)NoneXTLVLD(OSCXCN.7)Источник прерыванияСбросВнешнее прерывание 0 (/INT0)Переполнение Таймера 0Внешнее прерывание 1 (/INT1)Переполнение Таймера 1Последовательный порт (УАПП)Бит разрешенияРазрешен всегдаEX0 (IE.0)ET0 (IE.1)EX1 (IE.2)ET1 (IE.3)ES (IE.4)ET2 (IE.5)ESPI0 (EIE1.0)ESMB0 (EIE1.1)EWADC0 (EIE1.2)EPCA0 (EIE1.3)ECP0F (EIE1.4)ECP0R (EIE1.5)ECP1F (EIE1.6)ECP1R (EIE1.7)ET3 (EIE2.0)EADC0 (EIE2.1)EX4 (EIE2.2)EX5 (EIE2.3)EX6 (EIE2.4)EX7 (EIE2.5)Reserved (EIE2.6)EXVLD (EIE2.7)8.4.3.
Приоритеты прерыванийКаждому источнику прерываний можно программно присвоить один из двух уровней приоритета:низкий или высокий. Процедура ISR с низким приоритетом может быть прервана прерыванием с высокимприоритетом. Прерывание с высоким приоритетом не может быть прервано. Каждое прерывание имеетсвязанный с ним бит приоритета в регистрах SFR (IP-EIP2), используемый для настройки уровня приоритета.По умолчанию присваивается низкий приоритет. Если два прерывания происходят одновременно, прерывание сболее высоким приоритетом обслуживается первым.
Если оба прерывания имеют одинаковый приоритет, дляарбитража используется фиксированный уровень приоритета.8.4.4. Задержка обработки прерыванияВремя реакции на прерывание зависит от состояния процессорного ядра в момент возникновенияпрерывания. Опрос флага прерывания и декодирование приоритета осуществляется каждый системныйтактовый цикл. Поэтому, наименее возможное время реакции на прерывание составляет 5 тактовых циклов: 1цикл для определения прерывания и 4 цикла для выполнения команды LCALL перехода к процедуре ISR. Еслив момент выполнения команды RETI появляется прерывание, то до выполнения команды LCALL перехода напроцедуру обслуживания этого прерывания будет исполнена одна команда основной программы.
Поэтомумаксимальное время реакции на прерывание (если в настоящий момент не обслуживается другое прерываниеили если новое прерывание имеет более высокий приоритет) будет тогда, когда выполняется команда RETI, аследом за ней должна выполняться команда DIV. В этом случае время реакции составляет 18 тактовых циклов:1 цикл для определения прерывания, 5 циклов для выполнения команды RETI, 8 циклов для выполнениякоманды DIV и 4 цикла для выполнения команды LCALL перехода на процедуру ISR. Если выполняетсяпроцедура ISR для прерывания с равным или более высоким приоритетом, новое прерывание не будетобслужено до тех пор, пока не завершится текущая процедура ISR, включая команду RETI и следующуюкоманду.Ред.
1.260C8051F018C8051F0198.4.5. Описания регистров прерыванийРегистры SFR, используемые для разрешения/запрещения источников прерываний и установки ихприоритетов, описаны ниже. Подробная информация относительно условий возникновения прерываний отпериферийных модулей и поведения их флагов прерываний приведена в разделах данного руководства,посвященных работе соответствующих периферийных модулей.Рисунок 8.9. IE: Регистр разрешения прерыванийR/WEAБит 7Значениепри сбросе:R/WIEGF0R/WET2R/WESR/WET1R/WEX1R/WET0R/WEX0Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес:(доступен в битовомрежиме адресации)0xA800000000Бит 7: EA: Бит разрешения всех прерываний.Это бит глобально разрешает/запрещает все прерывания.