[an error occurred while processing this directive]
Тут этот вопрос уже обсуждался, и довольно подробно. Сошлись на том, что можно, но это плохой стиль. Вот одна из цитат. Это было несколько месяцев назад, можно поискать.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Владимир Н. 17 сентября 2002 г. 17:13
В ответ на: С балансом понятно, а как затолкнуть в стек адрес перехода? отправлено Serger 17 сентября 2002 г. 17:08

попасть из обработчика прерываний в произвольное место программы можно, для этого существует УЛОВКА ФИЛИПСА. Выглядит это примерно так:
'обработчик прерываний
:here_it_begins
'обработка
........
'выход
acall durka
dec SP
dec SP
ljmp WHERE_YOU_WANT
durka:
RETI
'и больше уже ничего не надо
Идея здесь в том, что возврат из подпрограммы durka происходит не командой RET, как у приличных людей, а командой RETI, которая одновременно сбрасывает недоступный программно флаг обработки прерывания. Эта уловка мною проверена в рабочих проектах.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru