Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Микроконтроллер: AT90USB1287
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
svlad
Кикроконтроллер: AT90USB1287

Только начинаю работать с IAR. Ни как не могу понять как обратиться к отдельноми биту в байте порта. Нашел вот, что:
Код
/*H**************************************************************************
* $RCSfile: mcu.h,v $
*****************************************************************************/

#ifndef MCU_H
#define MCU_H

/*==========================*/
/* Predefined SFR Addresses */
/*==========================*/

/******************************************************************************/
#if defined(__ICCAVR__) || defined(__IAR_SYSTEMS_ASM__)
/******************************************************************************/
SFR_B(PINA,   0x00) /* Input Pins, Port A */
SFR_B(DDRA,   0x01) /* Data Direction Register, Port A */
SFR_B(PORTA,  0x02) /* Data Register, Port A */

.......

#define PINA    (*(volatile unsigned char *)0x20)  /* Input Pins, Port A */
#define DDRA    (*(volatile unsigned char *)0x21) /* Data Direction Register, Port A */
#define PORTA   (*(volatile unsigned char *)0x22) /* Data Register, Port A */

..........

/*==========================*/
/* Bit Position Definitions */
/*==========================*/
/* PINA : Input Pins, Port A */
#define    PINA7    7
#define    PINA6    6
#define    PINA5    5
#define    PINA4    4
#define    PINA3    3
#define    PINA2    2
#define    PINA1    1
#define    PINA0    0

/* DDRA : Data Direction Register, Port A */
#define    DDA7     7
#define    DDA6     6
#define    DDA5     5
#define    DDA4     4
#define    DDA3     3
#define    DDA2     2
#define    DDA1     1
#define    DDA0     0

/* PORTA : Data Register, Port A */
#define    PORTA7   7
#define    PORTA6   6
#define    PORTA5   5
#define    PORTA4   4
#define    PORTA3   3
#define    PORTA2   2
#define    PORTA1   1
#define    PORTA0   0


Возник вопрос, что этим добиваются: SFR_B(PINA, 0x00) /* Input Pins, Port A */ ???
и #define PINA7 7
CSB
Где-то уже обсуждалось. А по теме: SFR_B(PINA, 0x00) - т.е. теперь к порту можно обращаться как к байтовой переменной с именем PINA.
"#define PINA7 7" - можно использовать в битовых сдвигах для установки/сброса соответствующего бита. Например,
Код
#define Bit(n) (1 << (n))
....
PORTB |= Bit(PINA7);       // set bit
PORTB &= ~ Bit(PINA7);   // clear bit


Но лучше использовать: PORTB_Bit0 = 1; А перед использованием нужно галочку в опциях поставить - там что-то типа "Enable bit definition".

Вот еще: http://electronix.ru/forum/index.php?showt...0934&st=60#
svlad
Цитата(CSB @ Feb 9 2007, 01:38) *
Где-то уже обсуждалось. А по теме: SFR_B(PINA, 0x00) - т.е. теперь к порту можно обращаться как к байтовой переменной с именем PINA.
"#define PINA7 7" - можно использовать в битовых сдвигах для установки/сброса соответствующего бита. Например,
Код
#define Bit(n) (1 << (n))
....
PORTB |= Bit(PINA7);       // set bit
PORTB &= ~ Bit(PINA7);   // clear bit


Но лучше использовать: PORTB_Bit0 = 1; А перед использованием нужно галочку в опциях поставить - там что-то типа "Enable bit definition".

Вот еще: http://electronix.ru/forum/index.php?showt...0934&st=60#

спасибо smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.