"И" в условии цикла
- kvark85
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Сб ноя 08, 2008 21:23:06
- Откуда: Харьков
- Контактная информация:
"И" в условии цикла
Здравствуйте уважаемые коты. Такая проблема, не работает как надо такое условие:
if (PINB.6==0 && PINB.7==0) {...}
пробовал изменить:
if ((PINB.6==0) && (PINB.7==0)) {...} - тоже не работает.
Если пишу if (PINB.6==0) {...} то срабататывает программа как надо.
И если просто пишу if (PINB.7==0) {...} то тоже работает как надо, тоесть условия выполняются. я не правильно делаю запись условия с "И"?
if (PINB.6==0 && PINB.7==0) {...}
пробовал изменить:
if ((PINB.6==0) && (PINB.7==0)) {...} - тоже не работает.
Если пишу if (PINB.6==0) {...} то срабататывает программа как надо.
И если просто пишу if (PINB.7==0) {...} то тоже работает как надо, тоесть условия выполняются. я не правильно делаю запись условия с "И"?
- Реклама
Re: "И" в условии цикла
Так не пробовал
if ((PINB.6==0) & ( PINB.7==0)) {...} ?
if ((PINB.6==0) & ( PINB.7==0)) {...} ?
- kvark85
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Сб ноя 08, 2008 21:23:06
- Откуда: Харьков
- Контактная информация:
Re: "И" в условии цикла
пробовал и так. не получается. посмотрел на сайтах - правильный у меня синтаксис, а в чем проблема не известно. вобщем в конечном устройстве будет только по одному параметру сравнивать условие. в чем дело - останетсяч загадкой
Re: "И" в условии цикла
А то, что просто условия PINB.6 и PINB.7 одновременно не выполняются мысль не приходила ? -)))
Синтаксис правильный
Синтаксис правильный
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: "И" в условии цикла
По моему тут одно из двух
1) Либо делаете проверку сперва пина 6, а в нем уже пина 7
2) копируете состояние всех пинов в переменную. Накладываете маску и затем обрабатываете оба бита
1) Либо делаете проверку сперва пина 6, а в нем уже пина 7
2) копируете состояние всех пинов в переменную. Накладываете маску и затем обрабатываете оба бита
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
- Реклама
-
codenamehawk
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: "И" в условии цикла
Отладка показала , что работает.kvark85 писал(а):
if ((PINB.6==0) && (PINB.7==0)) {...} - тоже не работает.
Проверьте сами
- DrWatson
- Опытный кот
- Сообщения: 890
- Зарегистрирован: Вт янв 20, 2009 14:49:08
- Откуда: Гондурас, Мурманск
Re: "И" в условии цикла
ИМХО корректный вариант в данном случае будет такой:
тогда оба "пина" будут "считываться" одновременно, а не "один, потом другой"
ну, или если хотите такой (те же яйца, только в профиль):
Код: Выделить всё
if(!(PINB&0xC0)){...}ну, или если хотите такой (те же яйца, только в профиль):
Код: Выделить всё
if(! (PINB&( (1<<6)|(1<<7) ) )- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
-
codenamehawk
- Вымогатель припоя
- Сообщения: 532
- Зарегистрирован: Вт фев 09, 2010 17:52:26
Re: "И" в условии цикла
Вопрос не в том как "правильнее", а в том что не работает. (когда не уверен, что должен работать, то иногда и не работает)DrWatson писал(а):ИМХО корректный вариант в данном случае будет такой:тогда оба "пина" будут "считываться" одновременно, а не "один, потом другой"Код: Выделить всё
if(!(PINB&0xC0)){...}
ну, или если хотите такой (те же яйца, только в профиль):Код: Выделить всё
if(! (PINB&( (1<<6)|(1<<7) ) )
Re: "И" в условии цикла
А как надо чтоб работало? По идее, условие истинно когда оба PIN нулевые. Когда хотя бы один PIN равен единице - условие ложно. Может, ошибка у Вас логическая? Например нужно "ИЛИ" а не "И"? или "И-НЕ"? Опишите конкретно, что надо реализовать. Запись вроде правильная, но я бы "для верности" добавил бы скобки:kvark85 писал(а):не работает как надо такое условие:
if (PINB.6==0 && PINB.7==0) {...}
Код: Выделить всё
if ((PINB.6==0) && (PINB.7==0)) {...}- Aheir
- Модератор
- Сообщения: 4517
- Зарегистрирован: Пн апр 03, 2006 11:43:25
- Откуда: Санкт - Петербург
- Контактная информация:
Re: "И" в условии цикла
Мне тоже, если честно, кажется, что автор не до конца понимает, чего хочет. Скажите, как оно должно по-Вашему работать? А то непонятненько как-то...
Оптимизм х (Опыт + Знания) = const
Re: "И" в условии цикла
а так должно работать во всех компиляторах
bit a,b;
a=PINB.6;
b=PINB.7;
if ((a==0) && (b==0)) {...}
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: "И" в условии цикла
Ага, переменная b условии не к чемуFUZZY_ писал(а):а так должно работать во всех компиляторах
Re: "И" в условии цикла
А с чего такая уверенность, что не работает? Компилятор генерит код, который уж и выполняется в железе. А точно ли в железе ( или хотя бы в симуляторе ) этот переход не работает при выполнении условий? Правильный ли код генерится компилятором - легко проверить анализом файла прошивки .HEXFUZZY_ писал(а):а так должно работать во всех компиляторах
Кстати, у меня была история, которую я так и до сих пор не понял. На Атмеге 48 не выполняется один фрагмент, хотя выполняться просто обязан, в симуляторе все ОК. Поменял МК, думал, что убился - однаково. Заменил ОДНУ команду абсолютно эквивалентной парой команд ( внимательнейшим образом проверил установку битов N,Z,V,C - одно и то же !) -- и вуаля : журчит как надо. Написал Атмелям, выслал код - говорят, не сумели поймать эффект. Надо было им все устройство высылать
- Pavel V.
- Мявтор!
- Сообщения: 384
- Зарегистрирован: Ср май 17, 2006 18:39:01
- Откуда: Москва
- Контактная информация:
Re: "И" в условии цикла
Ну-ну, во всех.. Правильный совет дал DrWatson.FUZZY_ писал(а):а так должно работать во всех компиляторах
bit a,b;
a=PINB.6;
b=PINB.7;
Re: "И" в условии цикла
На каком такте внутреней машины AVR идет выполнение команды опроса портов
относительно тактов задающего генератора ?
относительно тактов задающего генератора ?


