| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > инверсия двоичного кода |
| Автор: СерегаГоляков 2.12.2010, 15:40 | ||||
| Здравствуйте, следующая проблема: есть кусок проги:
желаю, чтоб выполнялось условие
Однако на порт А (PINA), как и мне и надо приходит значение 01111111, кот не явл равным 10000000, поэтому желаемое условие не выполняется. Значит надо инверсию сделать. Дело в том, что пишу в AVR studio, вроде пробовал так: in=in^0xff, все равно не попадает в нужный case. и так пробовал: in=~PINA; и так не попадает. Вопрос: как еще можно 01111111 заменить на 10000000. |
| Автор: sQu1rr 2.12.2010, 15:50 | ||
Странно что не работает... Добавлено через 10 минут Хотя кто знает что это за PINA Лучше
|
| Автор: bsa 2.12.2010, 16:14 |
| СерегаГоляков, тебе случаем не один бит надо проверять? Если так, то делать это надо через битовую операцию И, а не через switch/case. |
| Автор: UniBomb 2.12.2010, 16:44 |
А ты посмотри, какое значение при дебаге показывает твоя АВРстудия. |
| Автор: СерегаГоляков 2.12.2010, 16:52 | ||||
| В том то и дело, что в АВР студии, в дебаге я могу видеть какие порты какое значение имеют на данный момент, а как посмотреть мои переменные, не заложенные на заводе, я не знаю если я понял bsa, то даже это:
вместо этого:
не помогает. Хотя я не знаю что именно такое битовая операция. |
| Автор: UniBomb 2.12.2010, 17:26 |
| СерегаГоляков, в режиме отладки доступна панелька watch. Туда вписываешь имя переменной и при пошаговой отладке в этой панельке сможешь видеть её (переменной) содержимое. Если панельки не видно, то надо нажать кнопку , либо alt+1 |
| Автор: casey 2.12.2010, 17:31 | ||
Судя по коду, ты и не должен туда попадать, смотри предпоследнюю строку
|
| Автор: bsa 2.12.2010, 18:03 |
Кто тебя тогда к контроллерам подпустил? есть число (байт в двоичной системе): 01010101 Берем от него 5-й бит: 01010101 & 00100000 => 00000000 Берем от него 4-й бит: 01010101 & 00010000 => 00010000 Выделяем младший полубайт: 01010101 & 00001111 => 00000101 Включаем 5-й бит: 01010101 | 00100000 => 01110101 Включаем 1-й и 7-й биты: 01010101 | 10000010 => 11010111 |
| Автор: СерегаГоляков 8.12.2010, 13:43 | ||
| лан все сделал, мона удалять) над было оставить:
можно удалять тему!!! |
| Автор: bsa 8.12.2010, 15:21 | ||
|