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

 
 
> Кто как работает с битами?
amost
сообщение Jun 19 2010, 09:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 28-10-05
Из: Ukraine, Khmelnitsky
Пользователь №: 10 246



avr-gcc

раньше объявлял одну/несколько байтовых переменных, дефайнами называл их биты. обращаясь к биту, использовал имя переменной, и соответствующее имя бита. очевидно, вариант неудобен при наличии большого кол-ва битовых переменных, нужно же помнить какой бит в каком байте.

может наверняка есть какой-то более удобный метод. макрос, определяющий имя байта с флагами по имени бита, что-ли.

Сообщение отредактировал amost - Jun 19 2010, 09:19
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dog Pawlowa
сообщение Jun 19 2010, 09:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(amost @ Jun 19 2010, 12:18) *
может наверняка есть какой-то более удобный метод. макрос, определяющий имя байта с флагами по имени бита, что-ли.

С gcc практически не работаю, но сам под ИАРом использую вот такое описание флагов в отдельном файле (см внизу)
Как это макросами развернуть - не показываю, ибо проклянете smile.gif
На самом то деле тот метод, который используете, имеет множество достоинств. Ну включите в имя маски имя переменной, чтобы не ошибиться.

Код
/*     name         var            bit   */

FLAG    (    eeprom_good                ,flags,    0x0001U )
FLAG    (    low_power_enable           ,flags,    0x0002U )
FLAG    (    factory_flag               ,flags,    0x0004U )
FLAG    (    service_calibration        ,flags, 0x0008U )
FLAG    (    remote                     ,flags, 0x0010U )
FLAG    (    show_value              ,flags, 0x0020U )
FLAG    (    blink                   ,flags, 0x0040U )
FLAG    (    missing_pulses          ,flags, 0x0080U )
FLAG    (    remote_change_enabled    ,flags, 0x0100U )
FLAG    (    booster_filled           ,flags, 0x0200U )
FLAG    (    refilling                ,flags, 0x0400U )
FLAG    (    conc_change_enable        ,flags,    0x0800U )
FLAG    (    delivery_passive        ,flags, 0x1000U )
FLAG    (    start_user_menu            ,flags, 0x2000U )
FLAG    (    process_happened           ,flags, 0x4000U )
//FLAG    (    block_booster_error        ,flags, 0x8000U )

FLAGS_VARIABLE ( flags )


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amost   Кто как работает с битами?   Jun 19 2010, 09:18
|- - M_Andrey   Код</P><P>union char_by_bit { st...   Jun 19 2010, 09:54
- - zltigo   QUOTE (amost @ Jun 19 2010, 11:18) avr-gc...   Jun 19 2010, 10:10
|- - demiurg_spb   На платформах, не имеющих атомарного битового дост...   Jun 19 2010, 11:27
|- - zltigo   QUOTE (demiurg_spb @ Jun 19 2010, 13:27) ...   Jun 19 2010, 12:00
|- - MrYuran   Цитата(zltigo @ Jun 19 2010, 16:00) Естес...   Jun 19 2010, 13:40
||- - rezident   Цитата(MrYuran @ Jun 19 2010, 19:40) Или,...   Jun 19 2010, 15:20
||- - zltigo   QUOTE (MrYuran @ Jun 19 2010, 15:40) А ес...   Jun 19 2010, 17:08
||- - Serj78   Цитата(zltigo @ Jun 19 2010, 21:08) Вы хо...   Jun 19 2010, 18:03
|||- - zltigo   QUOTE (Serj78 @ Jun 19 2010, 20:03) Я не ...   Jun 19 2010, 19:15
||- - MrYuran   Цитата(zltigo @ Jun 19 2010, 21:08) Вы хо...   Jun 20 2010, 08:11
||- - MrYuran   Цитата(MrYuran @ Jun 20 2010, 12:11) Комп...   Jun 21 2010, 06:25
||- - demiurg_spb   Цитата(MrYuran @ Jun 21 2010, 10:25) Поэт...   Jun 21 2010, 08:50
|- - demiurg_spb   Цитата(zltigo @ Jun 19 2010, 16:00) Ну и ...   Jun 20 2010, 10:30
|- - zltigo   QUOTE (demiurg_spb @ Jun 20 2010, 12:30) ...   Jun 20 2010, 10:49
|- - demiurg_spb   Цитата(zltigo @ Jun 20 2010, 14:49) А зач...   Jun 20 2010, 22:44
|- - zltigo   QUOTE (demiurg_spb @ Jun 21 2010, 00:44) ...   Jun 21 2010, 06:09
||- - demiurg_spb   Цитата(zltigo @ Jun 21 2010, 10:09) Если ...   Jun 21 2010, 08:09
||- - zltigo   QUOTE (demiurg_spb @ Jun 21 2010, 10:09) ...   Jun 21 2010, 08:19
||- - Tanya   А я вот... делаю и так и эдак. Если быстро флаги (...   Jun 21 2010, 08:37
|- - Herz   Цитата(demiurg_spb @ Jun 21 2010, 01:44) ...   Jun 21 2010, 09:06
|- - demiurg_spb   stdint.h часть С99 http://en.wikipedia.org/wiki/C...   Jun 21 2010, 11:14
|- - Herz   Цитата(demiurg_spb @ Jun 21 2010, 14:14) ...   Jun 21 2010, 15:03
|- - rezident   Цитата(Herz @ Jun 21 2010, 21:03) ?Не чит...   Jun 21 2010, 15:14
|- - zltigo   QUOTE (rezident @ Jun 21 2010, 18:14) ста...   Jun 21 2010, 16:51
- - MALLOY2   ЦитатаЯ при переносе проекта на STM32 с avr решил ...   Jun 20 2010, 16:34
- - MALLOY2   ЦитатаЭто отлично! Через пару месяцев ему потр...   Jun 21 2010, 05:49
|- - Serj78   Цитата(MALLOY2 @ Jun 21 2010, 09:49) и ка...   Jun 21 2010, 17:39
|- - romez777   QUOTE (Serj78 @ Jun 21 2010, 21:39) А мож...   Jun 22 2010, 00:03
- - ViKo   Если определить несколько переменных типа bool, ко...   Jun 21 2010, 13:20
|- - rezident   Цитата(ViKo @ Jun 21 2010, 19:20) Если оп...   Jun 21 2010, 14:48
- - Herz   Ясно, спасибо. Но вроде как и int8_t, и uint8_t га...   Jun 21 2010, 17:02
|- - demiurg_spb   Цитата(Herz @ Jun 21 2010, 21:02) Ясно, с...   Jun 22 2010, 09:08
- - MALLOY2   ЦитатаА можно по подробнее, КАК он расширяет? Ког...   Jun 22 2010, 08:40


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 09:16
Рейтинг@Mail.ru


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