
- •Введение Структура гибкой производственной системы
- •1. Классификация устройств программного управления
- •2. Принципы построения микропроцессорных систем
- •3. Способы внутрисистемной организации мультимикропроцессорных систем
- •Устройства числового программного управления станками и системы управления промышленными роботами
- •4. 1. Устройство числового программного управления fms-3000
- •4.2. Учпу Маяк600
- •4.3. Система управления рб 242
- •4.4. Су «сфера-36»
- •Микроконтроллеры cisc и risc архитектуры
- •5.1. Выбор микроконтроллера
- •5. 2. Микроконтроллер км1816ве51
- •Устройство управления и синхронизации
- •Порты ввода/вывода информации
- •Таймеры/счётчики
- •Последовательный порт
- •Работа уапп в мультимикроконтроллерных системах
- •Система прерываний
- •Приоритеты прерываний при поллинге
- •Особенности запросов внешних прерываний
- •Программирование мк51 Методы адресации
- •Система команд семейства mк-51
- •Типовая схема построения су на базе мк51
Система прерываний
Исходная система прерываний в архитектуре MК-51 включает пять источников – два внешних и три внутренних. Система развивается, с появлением новых типов микроконтроллеров этой серии число источников прерываний постоянно увеличивается и достигло в некоторых пятнадцати.
Рассмотрим систему прерываний МК51.
Из пяти источников прерываний внешними являются входы /INT0 и /INT1, а внутренними – два счетчика/таймера и последовательный порт. Активные сигналы на входах /INT0, /INT1 устанавливают флаги IE0, IE1 регистра TCON (РУСТ). Таймер 0 и Таймер 1 используют для выработки запросов прерываний РУСТ флаги переполнения TF0, TF1 в регистре управления TCON, а последовательный порт использует для этого два флага - приемника R1 и передатчика T1 в регистре управления SCON (РУПП). Каждый из флагов последовательного порта может вызвать прерывание, а конкретный источник определяет процедура обслуживания посредством опроса.
Реакция на любой запрос, разрешенный к обслуживанию в РМП, заключается в передаче управления от текущей программы специальной процедуре обслуживания прерывания данного типа. Осуществляется эта передача посредством команды LCALL, код которой выбирается из памяти, а формируется внутри микроконтроллера. Адрес перехода в архитектуре МК51 соответствует вектору прерывания и фиксирован для каждого источника (табл.5.6).
Таблица 5.6. Векторы системы прерываний
Источник прерывания |
Адрес вектора прерывания |
Внешнее прерывание /INT0 |
0003Н |
Таймер /счетчик Т/С0 |
000ВН |
Внешнее прерывание /INT1 |
0013Н |
Таймер /счетчик Т/С1 |
001ВН |
Последовательный порт |
0023Н |
Из таблицы 5.6 видно, что интервал между адресами составляет всего 8 ячеек памяти программ, поэтому по первым четырем адресам может располагаться либо очень короткая процедура, либо команда JMP перехода на область памяти, где находится более длинная процедура обслуживания. По адресу последовательного порта места больше. Если по адресам векторов прерываний находятся команды JMP, то имеет место так называемая таблица переходов системы прерываний.
Когда запрос прерывания принят на обслуживание, выполняется следующая последовательность действий. Текущая команда выполняется до конца. Затем внутренне формируемая команда LCALL сохраняет текущее значение счетчика команд PC (адрес следующей команды) в стеке. Это позволяет после завершения процедуры обслуживания прерывания вернуться в прерванную программу. Далее эта команда загружает в PC адрес - вектор. Сохранение в стеке других регистров микроконтроллера, кроме PC, осуществляется программистом командами PUSH в начале процедуры обслуживания. В конце процедуры должны стоять соответствующие команды выгрузки POP. Этот процесс отдан на усмотрение разработчика, поскольку от объема сохраняемой информации сильно зависит время реакции на прерывание. Процедура обслуживания прерывания завершается командой RETI, которая выгружает из стека адрес возврата и помещает его в РС.
Каждый из источников прерываний может быть разрешен или запрещен с использованием соответствующего бита регистра IE (табл. 5.7). Кроме того, в этом регистре есть бит запрета всех прерываний ЕА.
Таблица 5.7. Регистр РМП (IE)
Имя бита |
Номер бита |
Функция |
EA |
IE.7 |
Запрещение запросов от всех источников, имеет место при EA=0. |
- |
IE.6 |
Зарезервирован. |
- |
IE.5 |
Зарезервирован. |
ES |
IE.4 |
Запрещение запроса от последовательного порта, имеет место при ES=0. |
ET1 |
IE.3 |
Запрещение запроса от Таймера 1, имеет место при ET1=0. |
EX1 |
IE.2 |
Запрещение запроса по входу /INT1, имеет место при EX1=0. |
ET0 |
IE.1 |
Запрещение запроса от Таймера 0, имеет место при ET0=0. |
EX0 |
IE.0 |
Запрещение запроса по входу /INT0, имеет место при EX0=0. |
При проявлении запросов от нескольких источников очередность их обслуживания определяется с помощью механизма приоритетов прерываний.
В архитектуре МК51 имеет место двухступенчатый механизм определения приоритетов. Приоритеты на первой ступени имеют два уровня: «высокий» и «низкий», и определяются значениями битов регистра приоритетов IP (табл. 5.8).
Таблица 5.8. Регистр приоритетов (IP)
Имя бита |
Номер бита |
Функция |
- |
IP.7 |
Зарезервирован |
- |
IP.6 |
Зарезервирован |
- |
IP.5 |
Зарезервирован |
PS |
IP.4 |
Определяет приоритет последовательного порта |
PT1 |
IP.3 |
Определяет приоритет Таймера 1 |
PX1 |
IP.2 |
Определяет приоритет входа /INT1 |
PT0 |
IP.1 |
Определяет приоритет Таймера 0 |
PX0 |
IP.0 |
Определяет приоритет входа /INT0 |
При «1» в определенном разряде регистра IP приоритет соответствующего источника прерывания высокий, а при «0» - низкий. При одновременном появлении нескольких запросов одного уровня очередность обслуживания определяется с помощью внутренней процедуры поллинга (последовательного опроса), который производится в порядке фиксированного старшинства источников внутри одного уровня приоритета.