Студопедия — Команды возврата из подпрограмм
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Команды возврата из подпрограмм






В конце каждой подпрограммы обязательно должна находиться команда возврата из нее. В системе команд микроконтроллеров семейства имеется две таких команды. Для возврата из обычной подпрограммы, вызываемой командой RCALL, используется команда RET. Для возврата из подпрограммы обработки прерывания используется команда RETI.

Обе команды восстанавливают из стека содержимое счетчика команд, сохраненное там перед переходом к подпрограмме. Команда возврата из подпрограммы RETI дополнительно устанавливает в «1» флаг общего разрешения прерываний I регистра SREG, сбрасываемый аппаратно при возникновении прерывания.

На выполнение каждой из команд возврата из подпрограммы требуется 4 машинных цикла.

Стек

В микроконтроллерах AVR семейства Tiny стек реализован аппаратно. Глубина стека равна трем уровням, а размер равен размеру счетчика команд (9 или 10 разрядов). Стек расположен в собственной области памяти и имеет LIFO-организацию (Last In First Out — последним вошел, первым вышел), т. е. значение, записанное последним, будет прочитано первым.

При вызове подпрограммы адрес команды, расположенной за командой RCALL, сохраняется в стеке. При возврате из подпрограммы этот адрес извлекается из стека и загружается в счетчик команд. Тоже происходит и во время прерывания. При генерации прерывания адрес следующей команды сохраняется в стеке, а при возврате из подпрограммы обработки прерывания он восстанавливается из стека.

Непосредственно из программы стек недоступен, т. к. в наборе команд микроконтроллера отсутствуют команды занесения в стек и извлечения из стека. Указатель стека также недоступен из программы, т. е. он не может быть явно прочитан или модифицирован. Поэтому микроконтроллер сам управляет перемещением данных по стеку. Чтобы лучше понять работу стека, обратитесь к Рис. 6.5и Рис. 6.6.

Рассмотрим выполнение команды RCALL (Рис. 6.5): содержимое счетчика команд пересылается на 1-й уровень стека, а предыдущие значения предварительно «сползают» на один уровень (значение, находившееся на первом уровне, перемещается на второй уровень и т. д.).Заметим, что в результате этой операции будет потеряно значение, расположенное на 3-м уровне стека.

При выполнении команды возврата из подпрограммы RET или RE-TI (Рис. 6.6) значение, хранящееся на 1-м уровне стека, заносится в счетчик команд. Во время этой операции все значения «поднимаются» на один уровень вверх (значение, находившееся на втором уровне, перемещается на первый уровень и т. д.).

Рис. 6.5. Работа стека при выполнении команды RCALL

Рис. 6.6. Работа стека при выполнении команды RET

 

Регистровый файл содержит 32 8-и разрядных регистра общего назначения (РОН), которые в командах обозначаются от r0 до r31. Раньше только один регистр – аккумулятор мог воспринимать результаты операций АЛУ. В МК-ах фирмы Atmel все 32 регистра могут выполнять функции аккумулятора. Такой подход значительно облегчает процесс написания программы и упрощает саму программу, избавляя ее от ненужных команд, перекладывающих результат из аккумулятора в нужный регистр. Шесть из 32-х регистров можно использовать как три 16-ти разрядных регистровых пары (указатели адреса в адресном пространстве данных).

Эти регистры обозначаются как X, Y и Z, и определены следующим образом:

Для адресации таблиц в памяти программ можно использовать только регистровую пару Z.







Дата добавления: 2015-08-12; просмотров: 459. Нарушение авторских прав; Мы поможем в написании вашей работы!



Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

Подкожное введение сывороток по методу Безредки. С целью предупреждения развития анафилактического шока и других аллергических реак­ций при введении иммунных сывороток используют метод Безредки для определения реакции больного на введение сыворотки...

Принципы и методы управления в таможенных органах Под принципами управления понимаются идеи, правила, основные положения и нормы поведения, которыми руководствуются общие, частные и организационно-технологические принципы...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия