"И" в условии цикла

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
kvark85
Встал на лапы
Сообщения: 108
Зарегистрирован: Сб ноя 08, 2008 21:23:06
Откуда: Харьков
Контактная информация:

"И" в условии цикла

Сообщение kvark85 »

Здравствуйте уважаемые коты. Такая проблема, не работает как надо такое условие:

if (PINB.6==0 && PINB.7==0) {...}

пробовал изменить:

if ((PINB.6==0) && (PINB.7==0)) {...} - тоже не работает.

Если пишу if (PINB.6==0) {...} то срабататывает программа как надо.

И если просто пишу if (PINB.7==0) {...} то тоже работает как надо, тоесть условия выполняются. я не правильно делаю запись условия с "И"?
Реклама
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: "И" в условии цикла

Сообщение Vov123 »

Так не пробовал
if ((PINB.6==0) & ( PINB.7==0)) {...} ?
Реклама
Аватара пользователя
kvark85
Встал на лапы
Сообщения: 108
Зарегистрирован: Сб ноя 08, 2008 21:23:06
Откуда: Харьков
Контактная информация:

Re: "И" в условии цикла

Сообщение kvark85 »

пробовал и так. не получается. посмотрел на сайтах - правильный у меня синтаксис, а в чем проблема не известно. вобщем в конечном устройстве будет только по одному параметру сравнивать условие. в чем дело - останетсяч загадкой
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: "И" в условии цикла

Сообщение Satyr »

А то, что просто условия PINB.6 и PINB.7 одновременно не выполняются мысль не приходила ? -)))
Синтаксис правильный
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Meteor
Друг Кота
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....
Контактная информация:

Re: "И" в условии цикла

Сообщение Meteor »

По моему тут одно из двух
1) Либо делаете проверку сперва пина 6, а в нем уже пина 7
2) копируете состояние всех пинов в переменную. Накладываете маску и затем обрабатываете оба бита
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Реклама
codenamehawk
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: "И" в условии цикла

Сообщение codenamehawk »

kvark85 писал(а):
if ((PINB.6==0) && (PINB.7==0)) {...} - тоже не работает.
Отладка показала , что работает.

Проверьте сами
mus.rar
проект на CV и файл main_cof.aps для студии
(52.49 КБ) 121 скачивание
Реклама
Аватара пользователя
DrWatson
Опытный кот
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Re: "И" в условии цикла

Сообщение DrWatson »

ИМХО корректный вариант в данном случае будет такой:

Код: Выделить всё

if(!(PINB&0xC0)){...}
тогда оба "пина" будут "считываться" одновременно, а не "один, потом другой"
ну, или если хотите такой (те же яйца, только в профиль):

Код: Выделить всё

if(! (PINB&( (1<<6)|(1<<7) ) )
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
codenamehawk
Вымогатель припоя
Сообщения: 532
Зарегистрирован: Вт фев 09, 2010 17:52:26

Re: "И" в условии цикла

Сообщение codenamehawk »

DrWatson писал(а):ИМХО корректный вариант в данном случае будет такой:

Код: Выделить всё

if(!(PINB&0xC0)){...}
тогда оба "пина" будут "считываться" одновременно, а не "один, потом другой"
ну, или если хотите такой (те же яйца, только в профиль):

Код: Выделить всё

if(! (PINB&( (1<<6)|(1<<7) ) )
Вопрос не в том как "правильнее", а в том что не работает. (когда не уверен, что должен работать, то иногда и не работает)
stas00n
Вымогатель припоя
Сообщения: 557
Зарегистрирован: Пн мар 23, 2009 04:03:45

Re: "И" в условии цикла

Сообщение stas00n »

kvark85 писал(а):не работает как надо такое условие:

if (PINB.6==0 && PINB.7==0) {...}
А как надо чтоб работало? По идее, условие истинно когда оба PIN нулевые. Когда хотя бы один PIN равен единице - условие ложно. Может, ошибка у Вас логическая? Например нужно "ИЛИ" а не "И"? или "И-НЕ"? Опишите конкретно, что надо реализовать. Запись вроде правильная, но я бы "для верности" добавил бы скобки:

Код: Выделить всё

if ((PINB.6==0) && (PINB.7==0)) {...}
Аватара пользователя
Aheir
Модератор
Сообщения: 4517
Зарегистрирован: Пн апр 03, 2006 11:43:25
Откуда: Санкт - Петербург
Контактная информация:

Re: "И" в условии цикла

Сообщение Aheir »

Мне тоже, если честно, кажется, что автор не до конца понимает, чего хочет. Скажите, как оно должно по-Вашему работать? А то непонятненько как-то...
Оптимизм х (Опыт + Знания) = const
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: "И" в условии цикла

Сообщение FUZZY_ »

а так должно работать во всех компиляторах

bit a,b;


a=PINB.6;
b=PINB.7;

if ((a==0) && (b==0)) {...}
Последний раз редактировалось FUZZY_ Сб янв 08, 2011 15:18:55, всего редактировалось 1 раз.
Аватара пользователя
andrey_artemov
Встал на лапы
Сообщения: 136
Зарегистрирован: Сб авг 15, 2009 21:26:50
Откуда: Пенза
Контактная информация:

Re: "И" в условии цикла

Сообщение andrey_artemov »

FUZZY_ писал(а):а так должно работать во всех компиляторах
Ага, переменная b условии не к чему :)) :)) :))
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: "И" в условии цикла

Сообщение Jack_A »

FUZZY_ писал(а):а так должно работать во всех компиляторах
А с чего такая уверенность, что не работает? Компилятор генерит код, который уж и выполняется в железе. А точно ли в железе ( или хотя бы в симуляторе ) этот переход не работает при выполнении условий? Правильный ли код генерится компилятором - легко проверить анализом файла прошивки .HEX

Кстати, у меня была история, которую я так и до сих пор не понял. На Атмеге 48 не выполняется один фрагмент, хотя выполняться просто обязан, в симуляторе все ОК. Поменял МК, думал, что убился - однаково. Заменил ОДНУ команду абсолютно эквивалентной парой команд ( внимательнейшим образом проверил установку битов N,Z,V,C - одно и то же !) -- и вуаля : журчит как надо. Написал Атмелям, выслал код - говорят, не сумели поймать эффект. Надо было им все устройство высылать :-(
Аватара пользователя
Pavel V.
Мявтор!
Сообщения: 384
Зарегистрирован: Ср май 17, 2006 18:39:01
Откуда: Москва
Контактная информация:

Re: "И" в условии цикла

Сообщение Pavel V. »

FUZZY_ писал(а):а так должно работать во всех компиляторах
bit a,b;

a=PINB.6;
b=PINB.7;
Ну-ну, во всех.. Правильный совет дал DrWatson.
FUZZY_
Потрогал лапой паяльник
Сообщения: 390
Зарегистрирован: Чт сен 24, 2009 17:22:51
Откуда: UK

Re: "И" в условии цикла

Сообщение FUZZY_ »

На каком такте внутреней машины AVR идет выполнение команды опроса портов
относительно тактов задающего генератора ?
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»