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

 
 
> Микроконтроллер: AT90USB1287, обращение к отдельному биту
svlad
сообщение Feb 8 2007, 17:11
Сообщение #1





Группа: Новичок
Сообщений: 12
Регистрация: 2-02-07
Пользователь №: 24 971



Кикроконтроллер: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
CSB
сообщение Feb 9 2007, 01:38
Сообщение #2


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

Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088



Где-то уже обсуждалось. А по теме: 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#

Сообщение отредактировал CSB - Feb 9 2007, 01:41
Go to the top of the page
 
+Quote Post
svlad
сообщение Feb 13 2007, 16:09
Сообщение #3





Группа: Новичок
Сообщений: 12
Регистрация: 2-02-07
Пользователь №: 24 971



Цитата(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
Go to the top of the page
 
+Quote Post

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

 


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


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