Работа MK51 в пошаговом режиме

На этапе отладки прикладной программы в прототипе МК-системы очень удобным для разработчика оказывается режим пошагового (покомандного) исполнения программы. Система прерываний МК51 позволяет реализовать этот режим работы путем использования нескольких дополнительных команд. Как было описано в разделе «Система прерываний», внешний запрос прерывания не будет обслужен до тех пор, пока обслуживается прерывание с равным приоритетом. Этот запрос будет воспринят лишь после того, как одна команда после команды RETI будет выполнена. Иными словами, однажды вызвав подпрограмму обслуживания прерывания, вызвать ее вновь невозможно до тех пор, пока хотя бы одна команда основной программы не будет исполнена. Использовать это свойство системы прерываний МК51 для реализации пошагового режима можно следующим образом: одно из внешних прерываний, например INT0 (вывод Р3.2 микроконтроллера), запрограммировать для представления запроса уровнем сигнала (IT = 0), а подпрограмма обслуживания этого прерывания должна заканчиваться последовательностью команд:

JNB P3.2, $ ; Ожидание уровня 1 на входе INT0
JB P3.2, $ ; Ожидание уровня 0 на входе INT1
RETI   ; Возврат и выполнение одной команды

Здесь символом $ обозначено текущее содержимое счетчика команд. Теперь если на вывод INT0 подавать сигнал от клавиши ШАГ отладочного модуля системы, то МК51 по сигналу INT0 = 0 вызовет подпрограмму обслуживания внешнего прерывания 0 и будет в ней находиться до тех пор, пока не обнаружит на входе INTO новый импульс (переход из 0 в 1 и снова в 0). По команде RETI произойдет возврат в основную программу, выполнение в ней одной команды и немедленный вызов подпрограммы обслуживания внешнего прерывания 0.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: