Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
bokir
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 9
1

Помощь по макросам

13.01.2013, 14:36. Просмотров 2920. Ответов 7
Метки нет (Все метки)

Всем привет! Снова прошу вашей помощи, гиганты AVR :)
Ребята, очень хочу научиться использовать макросы, но беда, не нахожу по ним уроки с нуля.
Помогите, пожалуйста, понять вот эти строки:

1) #define PORT_A PORTA, DDRA, PINA, A

2) #define __PORT_WRITE(VOTUE, PORT, DDR, PIN, ID) (PORT) = (VOTUE)

3) #define Pa0 0, PORT_A

Зарание благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 14:36
Ответы с готовыми решениями:

Вопрос по макросам!
Создать макрос который фильтрует данные в таблице "Кафедры" по году образования сохраняйте...

Справочник по макросам
В OpenOffice и LibreOffice имеются возможности писать макросы(думаю, тут Америку не открыл)....

теория по макросам
Опредлить правильную последовательность команд по записи макроса Word: - Нажать Панель, далее в...

Вопрос по макросам
Самостоятельно создайте, используя средство автоматического создания макросов. Назначьте созданный...

Зaдaчa по макросам (пoмогитe)
Напишите макрос, который выводит на экран шапку таблицы. В основной программе осуществить выведение...

7
HitysoptirX
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 245
13.01.2013, 14:55 2
http://www.codenet.ru/progr/cpp/Macros.php
http://www.opennet.ru/docs/RUS/cpp/cpp-5.html
http://dorkraha.com/rus/cpp/cpp26.php
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
13.01.2013, 14:58 3
Суть всех макросов очень проста:
#define A B
Везде где встречается A, оно будет заменено на B.
Для примера можно взять два первых упомянутых.
Их можно вместе использовать как
__PORT_WRITE(0xAB, PORT_A); -> __PORT_WRITE(0xAB, PORTA, DDRA, PINA, A); -> (PORTA) = (0xAB);
0
bokir
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 9
13.01.2013, 16:46 4
Спасибо всем кто согласился помочь.
Прежде чем начну изучать все сылки которые выложил HitysoptirX, хотелось бы навести порядок в моей голове.
Я понял пример #define A B и то что "Везде где встречается A, оно будет заменено на B".
А если встречается вот такая формулировка: #define A B, C, D
Как ее понять?
0
S_Otix
0 / 0 / 0
Регистрация: 28.01.2010
Сообщений: 537
14.01.2013, 00:12 5
#define A B, C, D
Заменит (A) на (B, C, D)
0
bokir
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 9
14.01.2013, 22:37 6
Подскажите, пожалуйста, что не так:
#define SIT_OBS(val) PORTA.0=val & 0x01;
PORTA.1=(val>>1)&0x01;
PORTA.2=(val>>2)&0x01;
Говорит что скобок не хватает во второй строчке. Убираю ее, так пишет что в третьей теперь не хватает.
Спасибо
0
MrYurom
0 / 0 / 0
Регистрация: 25.01.2012
Сообщений: 492
15.01.2013, 10:41 7
Цитата Сообщение от bokir
Подскажите, пожалуйста, что не так:
Все не так.
Во-первых, директива #define распространяется только на одну строку.
То есть, у вас вторая и третья - сами по себе.
Во-вторых, исполняемые макросы принято обрамлять в скобки
do{ }while(0)
0
bokir
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 9
15.01.2013, 12:40 8
Ага, заработало. Написал так; #define SIT_OBS(val) do{ PORTA.0=val & 0x01; PORTA.1=(val>>1)&0x01;PORTA.2=(val>>2)&0x01;} while(0)
Спасибо Юрин.
0
15.01.2013, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2013, 12:40

Интересная задача по макросам
Всем привет! Помогите решить следующую задачу: Есть макрос, который выполняет специальные...

Однин вопросик по макросам!
Прошу Вас! Cоздайте функцию пользователя в соответ¬ствии с вариантом задания. В тексте записки...

Назначение горячих клавишь макросам
Друзья, а подскажите пожалуйста, как на макрос назначить сочетание клавиш? Например при нажатии...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru