Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Как в CV_AVR изящнее реализовать проверку битов+++

Отправлено dshabrov (84.21.231.242) 26 апреля 2010, г. 12:30


В переменной Keyb типа unsigned int каждый бит отвечает за срабатывание своей кнопки. Как лучше реализовать проверку этих битов? Делал так:

unsigned int temp;
temp=Keyb;
if (temp &= 0x0001) {printf("KN12\n");}
temp=Keyb;
if (temp &= 0x0002) {printf("KN11\n");}
temp=Keyb;
if (temp &= 0x0004) {printf("KN9\n");}
temp=Keyb;
if (temp &= 0x0008) {printf("KN6\n");}
temp=Keyb;
if (temp &= 0x0010) {printf("KN3\n");}
temp=Keyb;
if (temp &= 0x0020) {printf("KN8\n");}
temp=Keyb;
if (temp &= 0x0040) {printf("KN10\n");}
temp=Keyb;
if (temp &= 0x0080) {printf("KN5\n");}
temp=Keyb;
if (temp &= 0x0100) {printf("KN2\n");}
temp=Keyb;
if (temp &= 0x0200) {printf("KN1\n");}
temp=Keyb;
if (temp &= 0x0400) {printf("KN4\n");}
temp=Keyb;
if (temp &= 0x0800) {printf("KN7\n");}
temp=Keyb;
if (temp &= 0x1000) {printf("KN13\n");}
temp=Keyb;
if (temp &= 0x2000) {printf("KN14\n");}
temp=Keyb;
if (temp == 0x0000) {printf("RELEASE\n");}


Не нравится то, что в процессе проверки разрушается переменная temp и ее нужно постоянно восстанавливать.
Чувствую, что здесь напрашивается Switch case, но в условии case не знаю как реализовать маску.

Может кто подскажет более изящное решение?


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 4 пополам:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru