Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > SFR_B(PINA, 0x00)


Автор: CROC 3.2.2007, 23:03
Код

/*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

МК:  AT90usb1287

как же мне после такого обратиться к биту из порта?

Автор: Ivan. 20.2.2007, 18:38
Код

#define Bit(Port, Bit) (((Port) >> (Bit)) & 1)
#define IsBit(Port, Bit) ((Port) & (1 << (Bit)))
#define Set(Port, Bit) (Port) |= 1 << (Bit)
#define Res(Port, Bit) (Port) &= ~(1 << (Bit))

// PORTA0 = 1
Set(PORTA, PORTA0); // тоже самое: Set(PORTA, 0);
// PORTA0 на вывод
Set(DDRA, DDRA0);
// PORTA0 - подпорка
Set(PORTA, PORTA1);
// PORTA0 на ввод
Res(DDRA, DDRA1);
// Проверить бит
if (IsBit(PINA, PINA1)
{
        // .......
}
// Взять бит
char Value = Bit(PINA, PINA0);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)