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

 
 
> Вопрос по работе с битами в WINAVR
sherr
сообщение Jan 20 2007, 22:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Как сделать, чтобы в WINAVR можно было бы работать с отдельными битами аналогично
CVAVR например PORTD.5=0 . Где-то видел готовый хидер для этого, но,увы...
не могу найти. Также интересут другие подобные хидеры облегчающие переход между
различными версиями компиляторов С для AVR.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Jan 21 2007, 01:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(sherr @ Jan 20 2007, 23:44) *
Как сделать, чтобы в WINAVR можно было бы работать с отдельными битами аналогично
CVAVR например PORTD.5=0 . Где-то видел готовый хидер для этого, но,увы...
не могу найти. Также интересут другие подобные хидеры облегчающие переход между
различными версиями компиляторов С для AVR.


Насколько программисты ратуют за "облегчение перехода с компилятора на компилятор", настолько производители компиляторов пытаются усложнить данную задачу и сделать переход более неудобным. biggrin.gif И их где-то можно понять.

С другой стороны, по-моему данная проблема (перехода) интересует только преподавателей и людей неопределившихся. Вторые делают переход как правило один - два раза. И если они ещё неопределились, то у них, как правило, ещё мало наработанных программ.

Теперь по сути вопроса.
Сам я пишу на IAR. Там есть такая возможность. Она описана в документации на компилятор.

Код
__io union {
                    unsigned char PORTE;
                    struct {
                                unsigned char PE0:1,
                                                     PE1:1,
                                                     PE2:1,
                                                     PE3:1,
                                                     PE4:1,
                                                     PE5:1,
                                                     PE6:1,
                                                     PE7:1;
                    }
                } @0x1f;
.......
PORTE.PE0 =0;
.......
PORTE = 15;
.....


Но мне кажется, что чаще пользуются более простым способом. И он более универсален. Иными словами, в следующий раз Вам не придётся искать способ перехода на другой компилятор.

PORTD &= ~(1<<5); Можно сделать макрос.
Go to the top of the page
 
+Quote Post



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

 


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


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