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

 
 
> #define - как применить правильно ?
Shurmas
сообщение Aug 17 2006, 14:58
Сообщение #1


Местный
***

Группа: Новичок
Сообщений: 232
Регистрация: 24-06-06
Пользователь №: 18 332



прошу совета.

Мне нужно управлять (подавать "1" или "0") 6-ю приборами с 6 ног мега16.

Хочу чтоб в верху программы были дефайны типа

#define PRIBOR(1) (тут порт и номер ноги к которой подключен)
и так 6 строчек. Но не могу понять что там писать ? Ведь нужна возможность писать и разные порты. И как потом в программе управлять DDR - хотя бы раз чтоб сделать соотв. ножки выходами ?
если я в дефайнах пропишу PORTx.x то как управлять DDRx ? или только 12 дефайнами решается ?

Компилер IAR или WinAVR но можно и под другой.

в идеале нужно чтоб можно бы так управлять

PRIBOR(переменная номер нужного прибора) = 1;
// выдать "1" на прибор номер как значение переменной.


PRIBOR(переменная номер нужного прибора) = OUT ;
// включить на выход ножку к прибору номер как значение переменной.

это возможно ? не могу придумать как.

Подскажите пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Evgeny_CD
сообщение Aug 21 2006, 07:17
Сообщение #2


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Для генерации таких вещей COG идеально подходит
http://www.nedbatchelder.com/code/cog/index_ru.html
http://www.onembedding.com/articles/cog-n-make/
http://www.onembedding.com/articles/cog-n-make/examples.htm
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 9 2008, 11:11
Сообщение #3


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Подскажите по использованию препроцессорной директиве #define в AVR Studio в программе на АССЕМБЛЕРЕ при использовании её не для определения константы, а для определения макроса-функции.

В общем виде определение препроцессорного макроса-функции выглядит так: #define prepMacrosName (список аргументов) (определение функции)

Вопрос №1

В хелпе приводиться такой пример:
#define SQR(X) ((X)*(X))

Т.е. если я вызову

ldi ZL , low SQR(17)

, то компилятор вместо SQR(17) напишет"

ldi ZL , low ((17) x (17)) или ldi ZL , low (289) ???

Вопрос №2

Обязательно ли в качестве аргументов "функции" макроса числовые переменные? Или можно и куски текстовых строк?
Могу ли я например использовать такой макрос:
#define Command (InstructionType) (InstructionType)

в строке программы

Command (and)i R16 , 0b01001000 // эквивалетно andi R16, 0b01001000
Command (or)i R16 , 0b01001110 // эквивалетно ori R16, 0b01001110


Замечание: как это сделано в СИ-компиляторах НЕ ИНТЕРЕСУЕТ. Интересует как это сделано для ассемблера в AVR Studio


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st June 2025 - 17:28
Рейтинг@Mail.ru


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