МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА 8051 - Script

Рис. 12.1. Переход внутри текущей 2К страницы

Различные виды безусловных переходов иллюстрируются при описании команд «jmp» (команда 12.51).

Подпрограммы на 8051 в основном работают, как ожидается. Команда «call» (команда 12.52) загружает адрес возврата в стек, а в конце подпрограммы команда «ret» (команда 12.53) производит извлечение из стека адреса возврата. Команда «call» может осуществлять страничный или длинный переход.

При использовании некоторых ассемблеров для достаточно написать «jmp» или «call», и ассемблер сам выберет наилучший способ перехода. Такие ассемблеры удобнее для программиста, так как они избавляют его от лишних забот и автоматически производят выбор способа перехода в зависимости от размера программы.

Если Вы знакомы с другими процессорами, то Вас вероятно удивит, что выполнении команды «push» происходит инкремент содержимого указателя стека. В большинстве других процессоров команда «push» производит декремент указателя стека. Поэтому при организации стека его указатель должен быть инициализирован на начало области стека, а не на ее конец, как в большинстве процессоров.

Команда «reti» (команда 12.53) работает подобно команде «ret» за исключением того, что она выполняется в конце обработчика прерывания. После этой команды микроконтроллер может воспринимать запрос на обслуживание следующего прерывания. Такая реализация команды «reti» исключает обработку вложенных прерываний, которая возможна в некоторых других микроконтроллерах. Это еще одна из причин, почему обработчики прерываний должны быть короче и выполняться как можно быстрее.

Go to Top