Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 16.01.2011, 17:52  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию WinAVR оператор "И"

WinAVR не хочет воспринимать вот это, т.е. компилирует без проблем, а реализовывать отказывается:

Код:
#define bit_is_0_and_1(reg,bit,reg1,bit1) ((!(reg & (1‹‹(bit))))&&(!(reg1 & (0‹‹(bit1))))) //проверка на линии порта 0 и 1
Сразу оговорюсь, что пробовал как логический оператор &&, так и побитовый оператор &, все равно не работает
хотя вот это прекрасно кушает:

Код:
#define bit_is_0(reg, bit) (!(reg & (1‹‹(bit)))) //проверка на линии порта 0
Моделирую в Proteus, уровень оптимизации OPT=s
Реклама:

Последний раз редактировалось Sho_otnik; 16.01.2011 в 17:58.
Sho_otnik вне форума  
Непрочитано 16.01.2011, 17:57  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

Забыл добавить, что используется это примерно так:

Код:
if(bit_is_0_and_1(PINA,4,PINA,7)){Ftype_1(freq_in,  step_in,step);}
Sho_otnik вне форума  
Непрочитано 16.01.2011, 18:41  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

Сообщение от Sho_otnik Посмотреть сообщение
(0‹‹(bit1))
Это что такое?

(Кстати, в макросе аргументы reg и reg1 тоже не мешает в скобки взять)
testerplus вне форума  
Непрочитано 16.01.2011, 18:51  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

Так наглядней?
Код:
if (!(PIND & (1‹‹PIND1))) // проверить "0" на линии 1 порта D
Sho_otnik вне форума  
Непрочитано 16.01.2011, 19:03  
roxfan
Временная регистрация
 
Регистрация: 25.11.2009
Сообщений: 61
Сказал спасибо: 1
Сказали Спасибо 17 раз(а) в 17 сообщении(ях)
roxfan на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

Я бы написал так:
Код:
#define bit_is_0_and_1(reg,bit,reg1,bit1) ( ((reg) & (1‹‹(bit))) == 0 && ((reg1) & (1‹‹(bit1))) != 0 )
А лучше имхо составлять сложные макросы из простых:
Код:
#define BITIS0(port, bit) (((port) && (1‹‹(bit))) == 0)
#define BITIS1(port, bit) (((port) && (1‹‹(bit))) != 0)
#define BITS0AND1(port1, bit1, port2, bit2) (BITIS0(port1, bit1) && BITIS1(port2, bit2))
Хотя зачем такой макрос нужен, мне не совсем ясно. Я бы писал составное условие прямо в коде - оно и понятнее будет.
roxfan вне форума  
Непрочитано 16.01.2011, 19:04  
igor-k
Временная регистрация
 
Регистрация: 03.02.2005
Сообщений: 52
Сказал спасибо: 8
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
igor-k на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

Смотри : https://kazus.ru/forums/showpost.php...92&postcount=8


testerplus, вам уже намекнул, а вы даже подумать не хотите.
igor-k вне форума  
Непрочитано 16.01.2011, 19:53  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

to igor-k
Не волнуйтесь за меня уважаемый, книгу заказал -книга едет)
Sho_otnik вне форума  
Непрочитано 16.01.2011, 19:55  
Sho_otnik
Частый гость
 
Аватар для Sho_otnik
 
Регистрация: 01.01.2011
Сообщений: 31
Сказал спасибо: 13
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Sho_otnik на пути к лучшему
По умолчанию Re: WinAVR оператор "И"

PS
Решил проблему просто вложенным условием if)
Sho_otnik вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
Глюки WinAVR KBH-I Коллекция глюков 19 07.06.2011 01:16
Помогите с массивами в WinAvr Sho_otnik Микроконтроллеры, АЦП, память и т.д 7 07.01.2011 11:56
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


Часовой пояс GMT +4, время: 05:09.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot