Организация системы прерываний

Линия запроса прерывания от внешнего источника ЗПР проверяется каждый машинный цикл во время действия сигнала САВП, но передача управления ячейке 3, где расположена команда JMP, выполняется только по завершению цикла команды. При обработке прерывания, как и при вызове подпрограммы, содержимое счетчика команд и старшей тетрады ССП сохраняется в стеке. Ко входу ЗПР микроконтроллера через монтажное ИЛИ от схем с открытым коллектором могут быть подключены несколько источников прерывания. После распознавания прерывания все последующие запросы прерывания игнорируются до тех пор, пока по команде возврата RETR вновь будет разрешена работа логики прерываний. Режим прерывания может быть запрещен или разрешен программой по командам DIS I и EN I. Сигнал ЗПР должен быть снят внешним устройством перед окончание подпрограммы обслуживания, т. е. до исполнения команды RETR. В том случае если внешнее устройство не сбрасывает

свой флаг запроса прерываний при обращении МК к его буферному регистру, одна из выходных линий МК используется подпрограммой обслуживания прерывания для сброса этого флага во внешнем устройстве. Так как вход ЗПР может быть проверен по команде условного перехода JNI, то при запрещенном режиме прерывания вход ЗПР может быть использован в качестве дополнительного тестирующего входа подобно входам Т0 и Т1.

При необходимости в МК можно создавать двухуровневую систему прерываний. Для этого надо разрешить прерывания от таймера, загрузить в него число FFH и перевести в режим подсчета внешних событий, фиксируемых на входе Т1. Переход сигнала на входе Т1 из состояния 1 в состояние 0 приведет к прерыванию по вектору в ячейке 7. В случае одновременного запроса прерываний от внешнего источника и запроса от флага переполнения таймера приоритет остается за источником, воздействующим на вход ЗПР.

При входе в подпрограммы обслуживания прерываний старший бит счетчика команд СК (11) принудительно устанавливается в нуль. Следовательно, вся процедура обработки прерываний должна быть размещена в банке памяти 0.

Таймер/счетчик. Внутренний 8-битный двоичный суммирующий счетчик может быть использован для формирования временных задержек и для подсчета внешних событий. Содержимое таймера/счетчика (Т/С) можно прочитать (MOV A, T) или изменить (MOV A, T). Две команды STRT T и STRT CNT настраивают и запускают таймер/счетчик в режиме таймера или в режиме счетчика событий соответственно. Остановить работу (но не сбросить содержимое) таймера/счетчика можно или командой STOP TCNT, или сигналом системного сброса СБР. Из максимального состояния FFH Т/С переходит в начальное состояние 00H. При этом устанавливается в 1 флаг переполнения, который может вызвать прерывание, если оно разрешено командой EN TCNTI. Прерывание от Т/С может быть запрещено командой DIS TCNTI, но при этом флаг переполнения может быть опрошен по команде условного перехода JTF. Выполнение команды JTF, как и переход к подпрограмме обработки прерывания по вектору с адресом 7, сбрасывает флаг переполнения Т/С.

В режиме таймера на вход Т/С через делитель частоты на 32 поступают основные синхросигналы машинного цикла САВП (400Гц), и счетчик увеличивает свое состояние на 1 через каждые 80 мкс (12, 5КГц). Путем программной установки Т/С в исходное состояние и анализа флага переполнения могут быть реализованы различные временные задержки, лежащие в диапазоне от 80 мкс до 20,48 мс. Временные задержки, превышающие по длительности 20 мс (256 состояний счетчика), могут быть получены накоплением переполнений в рабочем регистре под управлением программы.

В режиме счетчика событий внутренний счетчик увеличивает свое состояние на 1 каждый раз, когда сигнал на входе Т1 переходит из состояние 1 в состояние 0. Минимально возможное время между двумя входными сигналами равно 7. 5мкс (3 машинных цикла при использовании резонатора 6 МГц). Минимальная длительность на входе Т1 составляет 0. 5 мкс.