![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| bagira |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2858 Регистрация: 25.10.2003 Где: в тайге Уральских гор Репутация: 1 Всего: 123 |
Подскажите, пожалуйста, что делать в такой ситуации:
Имеется давно мною разработанная, проверенная и полгода работающая в условиях производства программа на ASM51 для 51-го микропроцессора. У разработчиков электроники появились изменения в схеме, в соответствии с которыми надо изменить и программу. Для меня желательно внести в код изменений по минимуму. Имеется несколько отдельных циклов, работающих почти идентично, но с небольшими отличиями. Каждый цикл - состоит из внешнего и внутреннего, вложенных один в другой. В каждом цикле (во внутреннем) идет обращение к одной и той же процедуре, скажем, W1. И вот теперь надо добавить в каждый цикл проверку одного условия. Если условие выполняется, то продолжать обычный ход цикла, если не выполняется, то нужно отправиться на одну и ту же метку (используется LJMP, т.к. метка дальняя). Как правильнее поступить: 1. Внести проверку условия в каждый цикл отдельно? (т.е. число вносимых изменений=числу циклов). Тогда - не будет ли ошибкой выход по LJMP из двойного цикла? 2. Добавить проверку условия в описание самой процедуры W1 (т.е. всего один раз). В этом случае - правомерно ли делать в описании процедуры уход LJMP на метку, расположенную уже не в процедуре, а в основной программе? -------------------- Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил... Ф.Х. Дагларджа (Турция) http://zveriolginovour.ru/ https://vmeste.yandex.ru/zveriolginovour |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
1. будет работать... и это главное... но может не так изящно...
2. не правомерно, но если освободить Pop-ом адрес возврата, очень даже ничего будет работать если ты заходишь в процедуру, то контроллер запоминает в стеке адрес возврата и, значит если ты уходишь из процедуры (навсегда), ты должен четко отслеживать все опирации со стеком. Если стек больше не используется ничем в пределах данной процедуры (т.е. цикл сам выполняется в основном цикле программы а не в прерывании), то вполне можно просто после проверки условия и его выполнения просто очистить стек. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| bagira |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2858 Регистрация: 25.10.2003 Где: в тайге Уральских гор Репутация: 1 Всего: 123 |
PILOTIK, то есть очистить стек нужно внутри самой процедуры перед выходом из нее?
А как конкретно это сделать? Просто мне ни разу не приходилось выходить из процедуры безвозвратно, не завершив ее. -------------------- Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил... Ф.Х. Дагларджа (Турция) http://zveriolginovour.ru/ https://vmeste.yandex.ru/zveriolginovour |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Проверка условия и в случае совпадения:
Pop Acc Pop Acc LJmp Label СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| bagira |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2858 Регистрация: 25.10.2003 Где: в тайге Уральских гор Репутация: 1 Всего: 123 |
Спасибо, PILOTIK!
-------------------- Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил... Ф.Х. Дагларджа (Турция) http://zveriolginovour.ru/ https://vmeste.yandex.ru/zveriolginovour |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Спасибо на бутерброде не булькает
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |