Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инверсия двоичного кода, как инвертировать? 
V
    Опции темы
СерегаГоляков
  Дата 2.12.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

Репутация: нет
Всего: нет



Здравствуйте, следующая проблема:

есть кусок проги:

Код

unsignet char ASCII[42]={0x80, и т.д.};// здесь типа алфавит записан рус 
unsignet char in;//полученное значение с порта А микроконтроллера

    while(1){
        in=PINA;
        in=in^0xFF;
        for(i=0;i<42;i++)
            if(in==ASCII[i]){
                switch(i){
                    case 0x80:


желаю, чтоб выполнялось условие
Код
 if(in==ASCII[i]){


Однако на порт А (PINA), как и мне и надо приходит значение 01111111, кот не явл равным 10000000, поэтому желаемое условие не выполняется. Значит надо инверсию сделать.

Дело в том, что пишу в AVR studio, вроде пробовал так:
in=in^0xff, все равно не попадает в нужный case.
и так пробовал: 
in=~PINA;
и так не попадает.

Вопрос: как еще можно 01111111 заменить на 10000000.


--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
sQu1rr
Дата 2.12.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: 3
Всего: 13



Цитата(СерегаГоляков @  2.12.2010,  15:40 Найти цитируемый пост)
in=~PINA;

Странно что не работает...

Добавлено через 10 минут
Хотя кто знает что это за PINA
Лучше
Код

if(~in==ASCII[i]){

PM MAIL Skype GTalk   Вверх
bsa
Дата 2.12.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



СерегаГоляков, тебе случаем не один бит надо проверять? Если так, то делать это надо через битовую операцию И, а не через switch/case.
PM   Вверх
UniBomb
Дата 2.12.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 97



Цитата(СерегаГоляков @  2.12.2010,  15:40 Найти цитируемый пост)
и так не попадает.

А ты посмотри, какое значение при дебаге показывает твоя АВРстудия.


--------------------
PM MAIL ICQ Skype   Вверх
СерегаГоляков
Дата 2.12.2010, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

Репутация: нет
Всего: нет



В том то и дело, что в АВР студии, в дебаге я могу видеть какие порты какое значение имеют на данный момент, а как посмотреть мои переменные, не заложенные на заводе, я не знаю smile

если я понял bsa

то даже это:
Код

if((in & ASCII[i])==0){


вместо этого:
Код

if(in==ASCII[i]){


не помогает. Хотя я не знаю что именно такое битовая операция.

--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
UniBomb
Дата 2.12.2010, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
***
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 1754
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 97



СерегаГоляков, в режиме отладки доступна панелька watch. Туда вписываешь имя переменной и при пошаговой отладке в этой панельке сможешь видеть её (переменной) содержимое.

Если панельки не видно, то надо нажать кнопку user posted image, либо alt+1

Это сообщение отредактировал(а) UniBomb - 2.12.2010, 17:31


--------------------
PM MAIL ICQ Skype   Вверх
casey
Дата 2.12.2010, 17:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 20.12.2006
Где: Украина

Репутация: нет
Всего: 2



Судя по коду, ты и не должен туда попадать, смотри предпоследнюю строку

Код

unsignet char ASCII[42]={0x80, и т.д.};// здесь типа алфавит записан рус 
unsignet char in;//полученное значение с порта А микроконтроллера

    while(1){
        in=PINA;
        in=in^0xFF;
        for(i=0;i<42;i++)
            if(in==ASCII[i]){
                switch(i){                         //переменная i равна 0 и 0x80 не будет равна никогда, 41 максимум
                    case 0x80:

PM MAIL WWW   Вверх
bsa
Дата 2.12.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(СерегаГоляков @  2.12.2010,  17:52 Найти цитируемый пост)
Хотя я не знаю что именно такое битовая операция.

Кто тебя тогда к контроллерам подпустил?
есть число (байт в двоичной системе): 01010101
Берем от него 5-й бит: 01010101 & 00100000 => 00000000
Берем от него 4-й бит: 01010101 & 00010000 => 00010000
Выделяем младший полубайт: 01010101 & 00001111 => 00000101
Включаем 5-й бит: 01010101 | 00100000 => 01110101
Включаем 1-й и 7-й биты: 01010101 | 10000010 => 11010111
PM   Вверх
СерегаГоляков
Дата 8.12.2010, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Всё супер :)
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 26.4.2010
Где: НСК

Репутация: нет
Всего: нет



лан все сделал, мона удалять)

над было оставить:
Код


in=PINA;
in=in^0xFF;
switch(in){                         
         case 0x80:



можно удалять тему!!!
--------------------
Список всех полезных программ в ОДНОЙ программеhttps://sites.google.com/site/coolprogramms...latnyh-programm...Пьяные белазисты в карьереhttp://www.youtube.com/watch?v=6FGNGMwxJZ4
PM WWW   Вверх
bsa
Дата 8.12.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
СерегаГоляков, если ответ на вопрос получен, то пометь тему решенной

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0837 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.