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

 
 
> #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
Ответов
AVR
сообщение Aug 18 2006, 20:30
Сообщение #2


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(Shurmas @ Aug 17 2006, 18:58) *
Мне нужно управлять (подавать "1" или "0") 6-ю приборами с 6 ног мега16.
Хочу чтоб в верху программы были дефайны типа
#define PRIBOR(1) (тут порт и номер ноги к которой подключен)
и так 6 строчек. Но не могу понять что там писать ? Ведь нужна возможность писать и разные порты

Вроде так:
Код
#define PRIBOR(Port, N, V) \
{ \
  *(Port - 1) |= (1<<N); \ //Делаем выходом вывод порта
  if(V) Port |= (1<<N); \ //Устанавливаем в V (1 или 0) соотвествующий вывод
  else Port &= ~(1<<N); \
}
//Далее
#define S1 PRIBOR(PORTA, 2, 1)
#define C1 PRIBOR(PORTA, 2, 0)


Сообщение отредактировал AVR - Aug 18 2006, 20:34


--------------------
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th August 2025 - 13:13
Рейтинг@Mail.ru


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