Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Смена информации для подпрограммы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Wise
Вопрос уважаемому сообществу.
Можно ли директивой SET переустанавливать ею же определенные именованные константы, перед вызовом подпрограммы, если эти константы в подпрограмме используются?

Сомнения вот в чем. Подпрограмма же не макрос, не записывается в PIC столько раз, сколько вызывается. И в кодах команд подпрограммы, "зашитой" в PIC, в каждой строке, должны быть, видимо, записаны конкретные значения операндов. И как они могут перед вызовом подпрограммы переустанавливаться?

Все это вызвано попыткой вводить в подпрограммму перед каждым вызовом новую информацию. И можно ли это делать, кроме косвенной адресации?
zelanz
SET - директива компилятора. Поэтому, ИМХО, встретив при компиляции два разных значения одной переменной, он выдаст ошибку.
Это несложно проверить в MPLAB на специальном простеньком примере.
Когда мне потребовалось менять данные при вызове п/п, я это сделал через EEPROM. Так мне показалось удобнее, поскольку изменение данных происходило не при каждом вызове п/п.
xemul
Цитата(Wise @ Jul 15 2006, 01:09) *
Вопрос уважаемому сообществу.
Можно ли директивой SET переустанавливать ею же определенные именованные константы, перед вызовом подпрограммы, если эти константы в подпрограмме используются?

Сомнения вот в чем. Подпрограмма же не макрос, не записывается в PIC столько раз, сколько вызывается. И в кодах команд подпрограммы, "зашитой" в PIC, в каждой строке, должны быть, видимо, записаны конкретные значения операндов. И как они могут перед вызовом подпрограммы переустанавливаться?

Все это вызвано попыткой вводить в подпрограммму перед каждым вызовом новую информацию. И можно ли это делать, кроме косвенной адресации?

Вы пытаетесь константы, задаваемые на этапе компиляции (директива SET), использовать как переменные (в данном случае аргументы для процедуры) на этапе исполненияsmile.gif.
Определите аргументы для процедуры (если я правильно понял, набор констант) как массив (через DW, DE...) и передавайте в процедуру или саму требуемую константу, или указатель на нее.
zelanz
Цитата(Wise @ Jul 16 2006, 23:57) *
Спасибо всем, нашедшим время ответить.
Свою частную задачу решил.
Где еще можно на русском почитать про PIC - овский ассемблер, кроме основных известных переводов фирменной документации?
Или негде?

Ну лично мне, кроме упомянутых источников, помогла книжка В.С. Яценков "Микроконтроллеры Microchip. Практическое руководство" 2005 г. (Видел, кажется на natahaus.ru в электронном виде).
Там примеров много, легко разобраться. Но лучше, ИМХО, сразу начать писать свои программы, а в литературе искать помощь и поддержку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.