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

 
 
> Битовая арифметика на си, Да блин на ассемблере с битами проще было
Чип-Хрум
сообщение Apr 11 2007, 13:37
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 33
Регистрация: 1-04-07
Пользователь №: 26 675



Помогите разобраться , я понимаю как воспользоваться этими сторочками но я их
сам не понимаю , короче нужен сансей каторый смог их правильно расшифровать,
или разжевать.
#define bitset(var,bitno) ((var) |= 1 << (bitno))
#define bitclr(var,bitno) ((var) &= ~(1 << (bitno)))

#define set_cs() (PORTB |= (1 << PB4))
#define clr_cs() (PORTB &= ~(1 << PB4))

#define get_miso() ((PINB & (1 << PB6)) ? 1 : 0)
И еще нужно из переменной типа char вывести нулевой бит
в порт В 5_й ноги опишите кто силен.
Нужно что-то универсальное для передачи бита из переменной в порт и назад.

Распишите комментарий как можно подробнее.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Axxel
сообщение Apr 12 2007, 05:19
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



Первая ваша строчка:

#define bitset(var,bitno) ((var) |= 1 << (bitno))

Ну, define ,уверен что знаете как работает.

((var) |= 1 << (bitno)) то же что var=var|(1<<bitno);

все конструкции типа:
|=
&=
^=
+=
-=
и.т.д

означают следующее:
a|=b означает a=a|b;
a&=b означает a=a&b; и.т.д

(1<<bitno) bitno-заданная вами переменная

т.е как бы получается что в числе 0
в двоичном 0000 0000
вы сдвигаете еденицу на bitno,
к примеру bitno=3;

результатом (1<<3)
будет 0000 1000 или число 8
счет начинается с 0
т.е (1<<0) будет равняться 0000 0001(единица)
(1<<7) соответственно 1000 0000 (128)


Последняя строчка:
#define get_miso() ((PINB & (1 << PB6)) ? 1 : 0)

(PINB&(1<<PB6))-выражение
? результат выражения истинный-подставляем 1
: результат ложный подставляем 0

ну а потом в теле программы что-то типа:

if(get_miso()){some actions...}
else{other actions...}





вроде бы все smile.gif

Сообщение отредактировал Axxel - Apr 12 2007, 05:47


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Чип-Хрум   Битовая арифметика на си   Apr 11 2007, 13:37
- - zltigo   Цитата(Чип-Хрум @ Apr 11 2007, 12:37...   Apr 11 2007, 13:42
- - rezident   Керниган и Ричи, "Язык С", раздел 4.11.2...   Apr 11 2007, 13:47
- - _Bill   Цитата(Чип-Хрум @ Apr 11 2007, 13:37...   Apr 11 2007, 14:16
- - v_shamaev   Цитата(Чип-Хрум @ Apr 11 2007, 14:37...   Apr 11 2007, 15:00
- - Чип-Хрум   Ув. Народ данного сайта я не просил тыркать в меня...   Apr 11 2007, 16:42
|- - rumit2000   Цитата(Чип-Хрум @ Apr 11 2007, 17:42...   Apr 11 2007, 16:56
- - afad   Можно и так. вначале 1 раз на всю программу запише...   Apr 11 2007, 17:52
- - SpyBot   Попытайсо глянуть сюда http://www.chip-news.ru/arc...   Apr 11 2007, 18:32
- - InvisibleFed   "|" - или "&" - и "~...   Apr 12 2007, 02:28
- - aforestman   Renesas предлагает менее мозгокрутный доступ к бит...   Apr 12 2007, 09:03
|- - Herz   Цитата(aforestman @ Apr 12 2007, 08:03) R...   Apr 12 2007, 09:48
- - Axxel   Да, кстати по-моему должен подойти общеизвестный к...   Apr 12 2007, 10:00
- - Чип-Хрум   Спасибо что подсказали теперь понятно все стало ...   Apr 12 2007, 13:56


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

 


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


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