📄 iomacro.h
字号:
}; \
} @ _ADDR;
#define SFR_W_BITS_EXT_IO(_ADDR, _NAME, _A,_B,_C,_D,_E,_F,_G,_H, _I,_J,_K,_L,_M,_N,_O,_P) \
__ext_io union { \
unsigned short _NAME; /* The sfrw as 1 short */ \
struct { /* The sfrw as 16 bits */ \
__BYTEBITS(_NAME, _A,_B,_C,_D,_E,_F,_G,_H) /* Bit names defined by user */ \
__BYTEBITS(_NAME, _I,_J,_K,_L,_M,_N,_O,_P) /* Bit names defined by user */ \
}; \
struct { /* The sfrw as 2 bytes */ \
unsigned char _NAME ## L; \
unsigned char _NAME ## H; \
}; \
struct { /* The sfrw as 2 x 8 bits */ \
__BYTEBITS(_NAME ## L, Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7) /* Bit names hard coded to 0-7 */ \
__BYTEBITS(_NAME ## H, Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7) /* Bit names hard coded to 0-7 */ \
}; \
} @ _ADDR;
#define SFR_W_BITS_N(_NAME, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H, _I,_J,_K,_L,_M,_N,_O,_P, \
_A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2, \
_I2,_J2,_K2,_L2,_M2,_N2,_O2,_P2) \
__io union { \
unsigned short _NAME; /* The sfrw as 1 short */ \
struct { /* The sfrw as 16 bits */ \
__BYTEBITS(_NAME, _A,_B,_C,_D,_E,_F,_G,_H) /* Bit names defined by user */ \
__BYTEBITS(_NAME, _I,_J,_K,_L,_M,_N,_O,_P) /* Bit names defined by user */ \
}; \
struct { /* The sfrw as 16 bits */ \
__BYTEBITS(_NAME, _A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2) /* Bit names defined by user */ \
__BYTEBITS(_NAME, _I2,_J2,_K2,_L2,_M2,_N2,_O2,_P2) /* Bit names defined by user */ \
}; \
struct { /* The sfrw as 2 bytes */ \
unsigned char _NAME ## L; \
unsigned char _NAME ## H; \
}; \
struct { /* The sfrw as 2 x 8 bits */ \
__BYTEBITS(_NAME ## L, Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7) /* Bit names hard coded to 0-7 */ \
__BYTEBITS(_NAME ## H, Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7) /* Bit names hard coded to 0-7 */ \
}; \
struct { /* The sfrw as 2 x 8 bits */ \
__BYTEBITS(_NAME ## L, _A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2) /* Bit names defined by user */ \
__BYTEBITS(_NAME ## H, _I2,_J2,_K2,_L2,_M2,_N2,_O2,_P2) /* Bit names defined by user */ \
}; \
} @ _ADDR;
#else
#ifndef __IAR_SYSTEMS_ASM__
/* Special for the icca90 */
/* Byte sized SFRs */
#define SFR_B_BITS(_NAME,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H)\
sfrb _NAME = _ADDR;
#define SFR_B_BITS_EXT(_NAME,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H)\
sfrb _NAME = _ADDR;
#define SFR_B2_BITS(_NAME1,_NAME2,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H)\
sfrb _NAME1 = _ADDR; sfrb _NAME2 = _ADDR;
#define SFR_B_BITS_N(_NAME,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H, \
_A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2)\
sfrb _NAME = _ADDR;
#define SFR_B_BITS_EXT_N(_NAME,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H, \
_A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2)\
sfrb _NAME = _ADDR;
#define SFR_B2_BITS_N(_NAME1,_NAME2,_ADDR,_A,_B,_C,_D,_E,_F,_G,_H, \
_A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2)\
sfrb _NAME1 = _ADDR; sfrb _NAME2 = _ADDR;
/* Word sized SFRs */
#define SFR_W_BITS(_NAME, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H, _I,_J,_K,_L,_M,_N,_O,_P)\
sfrw _NAME = _ADDR; sfrb _NAME##L = _ADDR; sfrb _NAME##H = (_ADDR+1);
#define SFR_W_BITS_N(_NAME, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H, _I,_J,_K,_L,_M,_N,_O,_P, \
_A2,_B2,_C2,_D2,_E2,_F2,_G2,_H2, \
_I2,_J2,_K2,_L2,_M2,_N2,_O2,_P2)\
sfrw _NAME = _ADDR; sfrb _NAME##L = _ADDR; sfrb _NAME##H = (_ADDR+1);
#endif
#endif /* !__ICCAVR__ */
#define SFR_B(_NAME, _ADDR) SFR_B_BITS(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
/*
SFR_B(SREG, 0x3F) Expands to:
__io union {
unsigned char SREG; // The sfrb as 1 byte
struct { // The sfrb as 8 bits
unsigned char SREG_Bit0:1,
SREG_Bit1:1,
SREG_Bit2:1,
SREG_Bit3:1,
SREG_Bit4:1,
SREG_Bit5:1,
SREG_Bit6:1,
SREG_Bit7:1;
};
} @ 0x3F;
*/
#define SFR_B2(_NAME1, _NAME2, _ADDR) SFR_B2_BITS(_NAME1, _NAME2, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_B_EXT(_NAME, _ADDR) SFR_B_BITS_EXT(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_W(_NAME, _ADDR) SFR_W_BITS(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define SFR_B_R(_ADDR, _NAME) SFR_B_BITS(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_B_EXT_IO_R(_ADDR, _NAME) SFR_B_BITS_EXT_IO(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_W_EXT_IO_R(_NAME, _ADDR) SFR_W_BITS_EXT_IO(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
/*
SFR_B(0x3F, SREG) Expands to:
__io union {
unsigned char SREG; // The sfrb as 1 byte
struct { // The sfrb as 8 bits
unsigned char SREG_Bit0:1,
SREG_Bit1:1,
SREG_Bit2:1,
SREG_Bit3:1,
SREG_Bit4:1,
SREG_Bit5:1,
SREG_Bit6:1,
SREG_Bit7:1;
};
} @ 0x3F;
*/
#define SFR_B2_R(_ADDR, _NAME1, _NAME2) SFR_B2_BITS(_NAME1, _NAME2, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_W_R(_ADDR, _NAME) SFR_W_BITS(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define SFR_B_N(_ADDR, _NAME, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
SFR_B_BITS_N(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
_B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
/*
SFR_B_N(0x3F,SREG,I,T,H,S,V,N,Z,C) Expands to:
__io union {
unsigned char SREG; // The sfrb as 1 byte
struct { // The sfrb as 8 bits
unsigned char SREG_Bit0:1,
SREG_Bit1:1,
SREG_Bit2:1,
SREG_Bit3:1,
SREG_Bit4:1,
SREG_Bit5:1,
SREG_Bit6:1,
SREG_Bit7:1;
};
struct { // The sfrb as 8 bits
unsigned char SREG_C:1,
SREG_Z:1,
SREG_N:1,
SREG_V:1,
SREG_S:1,
SREG_H:1,
SREG_T:1,
SREG_I:1;
};
} @ 0x3F;
*/
#define SFR_B2_N(_ADDR, _NAME1, _NAME2, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
SFR_B2_BITS_N(_NAME1, _NAME2, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
_B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
#define SFR_B_EXT_N(_ADDR, _NAME, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
SFR_B_BITS_EXT_N(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
_B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
#define SFR_B_EXT_IO_N(_ADDR, _NAME, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
SFR_B_BITS_EXT_IO_N(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
_B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
#define SFR_W_N(_ADDR, _NAME, _B15, _B14, _B13, _B12, _B11, _B10, _B9, _B8, \
_B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
SFR_W_BITS_N(_NAME, _ADDR, \
Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15, \
_B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7, \
_B8,_B9,_B10,_B11,_B12,_B13,_B14,_B15)
#endif /* __IOMACRO_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -