реклама на сайте
подробности

 
 
> Как проверить значение бита в CodeVIsion?
andre583
сообщение Mar 15 2008, 21:15
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 7-03-08
Пользователь №: 35 720



Подскажите новичку, как проверить значение бита 0 или 1 с примером на Си
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sysel
сообщение Mar 15 2008, 21:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



Цитата(andre583 @ Mar 16 2008, 00:15) *
Подскажите новичку, как проверить значение бита 0 или 1 с примером на Си


Если речь идет о бите в порте то:

if (PINA.5){
чего-нибудь делаем в случае если 5й вывод порта А = 1
}

Если речь об проверке бита в переменной или в регистре каком-то то действем с использованием битовых масок.
Маски:
0x01 - bit 0
0x02 - bit 1
0x04 - bit 2
0x08 - bit 3
0x10 - bit 4
0x20 - bit 5
0x40 - bit 6
0x80 - bit 7

Например проверить бит 3 в переменной Value:

if (Value&0x08){
делаем что-то если бит 3й равен 1
}
......

if (!(Value&0x08)){
делаем что-то если бит 3й равен 0
}
Go to the top of the page
 
+Quote Post
Abckur
сообщение Mar 16 2008, 06:58
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 57
Регистрация: 14-03-08
Пользователь №: 35 904



Цитата(sysel @ Mar 16 2008, 00:29) *
Маски:
0x01 - bit 0
0x02 - bit 1
0x04 - bit 2
0x08 - bit 3
0x10 - bit 4
0x20 - bit 5
0x40 - bit 6
0x80 - bit 7


маски удобно получать сдвигом.

вот маска для любого бита (1 << BIT)
BIT - это номер нужного бита

Вот так использовать:

if (Value & (1 << 3)) {
делаем что-то если бит 3й равен 1
}
Go to the top of the page
 
+Quote Post
andre583
сообщение Mar 16 2008, 12:23
Сообщение #4





Группа: Новичок
Сообщений: 8
Регистрация: 7-03-08
Пользователь №: 35 720



Очень изящное решение. Спасибо!!!!
Go to the top of the page
 
+Quote Post
Abckur
сообщение Mar 16 2008, 14:26
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 57
Регистрация: 14-03-08
Пользователь №: 35 904



Цитата(andre583 @ Mar 16 2008, 15:23) *
Очень изящное решение. Спасибо!!!!


[banned]
Цитата(sysel @ Mar 16 2008, 16:47) *
в некоторых компиляторах выражение (1<<9) может оказаться равным 0, т.к. компилятор думает, что он работает с байтовыми величинами, а не со словами.


Но проги пишут не в некотором абстрактном компиляторе а в конкретном !

Компилятор CVAVR указан в названии топика и он будет интерпритировать
как-то однозначно это выражение.

Проверить просто - посмотреть в листинге (файл .lst) результат компиляции.

Сообщение отредактировал zltigo - Mar 16 2008, 16:11
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 05:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016