реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Смена информации для подпрограммы, Директива SET
Wise
сообщение Jul 14 2006, 21:09
Сообщение #1


Пользователь забанен
*****

Группа: Свой
Сообщений: 1 138
Регистрация: 9-08-05
Пользователь №: 7 492



Вопрос уважаемому сообществу.
Можно ли директивой SET переустанавливать ею же определенные именованные константы, перед вызовом подпрограммы, если эти константы в подпрограмме используются?

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

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


--------------------
It's me
Go to the top of the page
 
+Quote Post
zelanz
сообщение Jul 15 2006, 06:51
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 16-05-06
Пользователь №: 17 152



SET - директива компилятора. Поэтому, ИМХО, встретив при компиляции два разных значения одной переменной, он выдаст ошибку.
Это несложно проверить в MPLAB на специальном простеньком примере.
Когда мне потребовалось менять данные при вызове п/п, я это сделал через EEPROM. Так мне показалось удобнее, поскольку изменение данных происходило не при каждом вызове п/п.
Go to the top of the page
 
+Quote Post
xemul
сообщение Jul 15 2006, 11:43
Сообщение #3



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Wise @ Jul 15 2006, 01:09) *
Вопрос уважаемому сообществу.
Можно ли директивой SET переустанавливать ею же определенные именованные константы, перед вызовом подпрограммы, если эти константы в подпрограмме используются?

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

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

Вы пытаетесь константы, задаваемые на этапе компиляции (директива SET), использовать как переменные (в данном случае аргументы для процедуры) на этапе исполненияsmile.gif.
Определите аргументы для процедуры (если я правильно понял, набор констант) как массив (через DW, DE...) и передавайте в процедуру или саму требуемую константу, или указатель на нее.
Go to the top of the page
 
+Quote Post
zelanz
сообщение Jul 17 2006, 06:58
Сообщение #4





Группа: Новичок
Сообщений: 8
Регистрация: 16-05-06
Пользователь №: 17 152



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

Ну лично мне, кроме упомянутых источников, помогла книжка В.С. Яценков "Микроконтроллеры Microchip. Практическое руководство" 2005 г. (Видел, кажется на natahaus.ru в электронном виде).
Там примеров много, легко разобраться. Но лучше, ИМХО, сразу начать писать свои программы, а в литературе искать помощь и поддержку.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 00:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.0139 секунд с 7
ELECTRONIX ©2004-2016