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

 
 
> Вопрос по работе с битами в 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
Ответов
Ljubitel
сообщение Jan 21 2007, 21:11
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 41
Регистрация: 12-01-05
Из: St. Petersburg
Пользователь №: 1 917



Цитата
Как сделать, чтобы в WINAVR можно было бы работать с отдельными битами аналогично
CVAVR например PORTD.5=0 . Где-то видел готовый хидер для этого, но,увы...
не могу найти. Также интересут другие подобные хидеры облегчающие переход между
различными версиями компиляторов С для AVR.

Как в CV не получится. Точка все таки оператор. А вот типа как в IAR можно.

Код
#include <avr/io.h>

/*
=====================================================================
    Задаем структуру (битовое поле) чтобы иметь возможность обращаться к битам переменных.
=====================================================================
*/
typedef struct    _bit_struct    {
                                unsigned char    Bit0:1,
                                                Bit1:1,
                                                Bit2:1,
                                                Bit3:1,
                                                Bit4:1,
                                                Bit5:1,
                                                Bit6:1,
                                                Bit7:1;
                            }bit_field;


/*
=====================================================================
    Определяем PORTD.
=====================================================================
*/
#ifdef    PORTD
    
    #define    PORTD_Bit0    (*((volatile bit_field*) (0x32))).Bit0
    #define    PORTD_Bit1    (*((volatile bit_field*) (0x32))).Bit1
    #define    PORTD_Bit2    (*((volatile bit_field*) (0x32))).Bit2
    #define    PORTD_Bit3    (*((volatile bit_field*) (0x32))).Bit3
    #define    PORTD_Bit4    (*((volatile bit_field*) (0x32))).Bit4
    #define    PORTD_Bit5    (*((volatile bit_field*) (0x32))).Bit5
    #define    PORTD_Bit6    (*((volatile bit_field*) (0x32))).Bit6
    #define    PORTD_Bit7    (*((volatile bit_field*) (0x32))).Bit7
    
    #define    DDRD_Bit0    (*((volatile bit_field*) (0x31))).Bit0
    #define    DDRD_Bit1    (*((volatile bit_field*) (0x31))).Bit1
    #define    DDRD_Bit2    (*((volatile bit_field*) (0x31))).Bit2
    #define    DDRD_Bit3    (*((volatile bit_field*) (0x31))).Bit3
    #define    DDRD_Bit4    (*((volatile bit_field*) (0x31))).Bit4
    #define    DDRD_Bit5    (*((volatile bit_field*) (0x31))).Bit5
    #define    DDRD_Bit6    (*((volatile bit_field*) (0x31))).Bit6
    #define    DDRD_Bit7    (*((volatile bit_field*) (0x31))).Bit7
    
    #define    PIND_Bit0    (*((volatile bit_field*) (0x30))).Bit0
    #define    PIND_Bit1    (*((volatile bit_field*) (0x30))).Bit1
    #define    PIND_Bit2    (*((volatile bit_field*) (0x30))).Bit2
    #define    PIND_Bit3    (*((volatile bit_field*) (0x30))).Bit3
    #define    PIND_Bit4    (*((volatile bit_field*) (0x30))).Bit4
    #define    PIND_Bit5    (*((volatile bit_field*) (0x30))).Bit5
    #define    PIND_Bit6    (*((volatile bit_field*) (0x30))).Bit6
    #define    PIND_Bit7    (*((volatile bit_field*) (0x30))).Bit7

#endif


int main ()
{
    while (1)
    {
        PORTD_Bit0 = 1;
        PORTD_Bit0 = 0;
    };
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:39
Рейтинг@Mail.ru


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