⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iomacro.h

📁 GPS 与 GSM协议C语言实现源码,为了大家能够更好的理解神秘的导航和手机通讯。
💻 H
📖 第 1 页 / 共 4 页
字号:
#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_BYTENAME(_NAME, _NAMEL, _NAMEH, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H, \
                                                          _I,_J,_K,_L,_M,_N,_O,_P)\
	sfrw _NAME = _ADDR; sfrb _NAMEL = _ADDR; sfrb _NAMEH = (_ADDR+1);
#define DATA_SFR_W_BITS_BYTENAME(_NAME, _NAMEL, _NAMEH, _ADDR, _A,_B,_C,_D,_E,_F,_G,_H, \
                                                          _I,_J,_K,_L,_M,_N,_O,_P)\
	sfrw _NAME = _ADDR; sfrb _NAMEL = _ADDR; sfrb _NAMEH = (_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);
#define DATA_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);
#define SFR_W_BITS_N_BYTENAME(_NAME,_NAMEL,_NAMEH, _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 _NAMEL = _ADDR; sfrb _NAMEH = (_ADDR+1);
#define DATA_SFR_W_BITS_N_BYTENAME(_NAME,_NAMEL,_NAMEH, _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 _NAMEL = _ADDR; sfrb _NAMEH = (_ADDR+1);

#define SFR_L_BITS(_NAME, _ADDR, \
                   _B0, _B1, _B2, _B3, _B4, _B5, _B6, _B7, \
                   _B8, _B9, _B10, _B11, _B12, _B13, _B14, _B15, \
                   _B16, _B17, _B18, _B19, _B20, _B21, _B22, _B23, \
                   _B24, _B25, _B26, _B27, _B28, _B29, _B30, _B31) \
	sfrb _NAME##0 = _ADDR; \
        sfrb _NAME##1 = (_ADDR+1); \
        sfrb _NAME##2 = (_ADDR+2); \
        sfrb _NAME##3 = (_ADDR+3); 
#define SFR_L_BITS_BYTENAME(_NAME,_NAME0,_NAME1,_NAME2,_NAME3,_ADDR,_STRUCT) \
	sfrb _NAME0 = _ADDR; \
        sfrb _NAME1 = (_ADDR+1); \
        sfrb _NAME2 = (_ADDR+2); \
        sfrb _NAME3 = (_ADDR+3); 

#define DATA_SFR_L_BITS(_NAME, _ADDR, \
                   _B0, _B1, _B2, _B3, _B4, _B5, _B6, _B7, \
                   _B8, _B9, _B10, _B11, _B12, _B13, _B14, _B15, \
                   _B16, _B17, _B18, _B19, _B20, _B21, _B22, _B23, \
                   _B24, _B25, _B26, _B27, _B28, _B29, _B30, _B31) \
	sfrb _NAME##0 = _ADDR; \
        sfrb _NAME##1 = (_ADDR+1); \
        sfrb _NAME##2 = (_ADDR+2); \
        sfrb _NAME##3 = (_ADDR+3); 
#define DATA_SFR_L_BITS_BYTENAME(_NAME,_NAME0,_NAME1,_NAME2,_NAME3,_ADDR,_STRUCT) \
	sfrb _NAME0 = _ADDR; \
        sfrb _NAME1 = (_ADDR+1); \
        sfrb _NAME2 = (_ADDR+2); \
        sfrb _NAME3 = (_ADDR+3); 

#define SFR_L_BITS_N(_NAME, _ADDR, \
                     _N0, _N1, _N2, _N3, _N4, _N5, _N6, _N7, \
                     _N8, _N9, _N10, _N11, _N12, _N13, _N14, _N15, \
                     _N16, _N17, _N18, _N19, _N20, _N21, _N22, _N23, \
                     _N24, _N25, _N26, _N27, _N28, _N29, _N30, _N31) \
	sfrb _NAME##0 = _ADDR; \
        sfrb _NAME##1 = (_ADDR+1); \
        sfrb _NAME##2 = (_ADDR+2); \
        sfrb _NAME##3 = (_ADDR+3); 

#define DATA_SFR_L_BITS_N(_NAME, _ADDR, \
                     _N0, _N1, _N2, _N3, _N4, _N5, _N6, _N7, \
                     _N8, _N9, _N10, _N11, _N12, _N13, _N14, _N15, \
                     _N16, _N17, _N18, _N19, _N20, _N21, _N22, _N23, \
                     _N24, _N25, _N26, _N27, _N28, _N29, _N30, _N31) \
	sfrb _NAME##0 = _ADDR; \
        sfrb _NAME##1 = (_ADDR+1); \
        sfrb _NAME##2 = (_ADDR+2); \
        sfrb _NAME##3 = (_ADDR+3); 


#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_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_B_R(_ADDR, _NAME) SFR_B_BITS(_NAME, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_B2(_NAME1, _NAME2, _ADDR) SFR_B2_BITS(_NAME1, _NAME2, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define SFR_B2_R(_ADDR, _NAME1, _NAME2) 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_B_EXT_IO_R(_ADDR, _NAME) SFR_B_BITS_EXT_IO(_NAME, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#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_B_N_EXTRA(_ADDR, _NAME, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0, _STRUCT) \
                 SFR_B_BITS_N_EXTRA(_NAME, _ADDR, \
                              Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                              _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7,_STRUCT)



#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_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_W_BYTENAME(_NAME, _NAMEL, _NAMEH, _ADDR)  SFR_W_BITS_BYTENAME(_NAME, _NAMEL, \
                                    _NAMEH, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                    Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define SFR_W_EXT_IO_R(_ADDR, _NAME) SFR_W_BITS_EXT_IO(_ADDR, _NAME, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                    Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define SFR_W_EXT_IO_BYTENAME(_ADDR, _NAME, _NAMEL, _NAMEH) SFR_W_BITS_EXT_IO_BYTENAME(_ADDR, _NAME, _NAMEL, _NAMEH, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                    Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#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)
#define SFR_W_N_BYTENAME(_ADDR, _NAME, _NAMEL, _NAMEH, _B15, _B14, _B13, _B12, \
                              _B11, _B10, _B9, _B8, \
                              _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
                SFR_W_BITS_N_BYTENAME(_NAME, _NAMEL, _NAMEH, _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)


#define SFR_L(_ADDR,_NAME) SFR_L_BITS(_NAME, _ADDR, \
                                        Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                        Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15, \
                                        Bit16,Bit17,Bit18,Bit19,Bit20,Bit21,Bit22,Bit23, \
                                        Bit24,Bit25,Bit26,Bit27,Bit28,Bit29,Bit30,Bit31)
#define SFR_L_BYTENAME(_ADDR,_NAME,_NAME0,_NAME1,_NAME2,_NAME3) SFR_L_BITS_BYTENAME(_NAME,_NAME0,_NAME1,_NAME2,_NAME3,_ADDR,)
#define SFR_L_N(_ADDR, _NAME, \
                _B31, _B30, _B29, _B28, _B27, _B26, _B25, _B24, \
                _B23, _B22, _B21, _B20, _B19, _B18, _B17, _B16, \
                _B15, _B14, _B13, _B12, _B11, _B10, _B9,  _B8, \
                _B7,  _B6,  _B5,  _B4,  _B3,  _B2,  _B1,  _B0) \
                SFR_L_BITS_N(_NAME, _ADDR, \
                             _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7, \
                             _B8,_B9,_B10,_B11,_B12,_B13,_B14,_B15, \
                             _B16,_B17,_B18,_B19,_B20,_B21,_B22,_B23, \
                             _B24,_B25,_B26,_B27,_B28,_B29,_B30,_B31)
#define SFR_L_EXT_IO(_ADDR,_NAME) SFR_L_BITS_EXT_IO(_NAME, _ADDR, \
                                        Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                        Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15, \
                                        Bit16,Bit17,Bit18,Bit19,Bit20,Bit21,Bit22,Bit23, \
                                        Bit24,Bit25,Bit26,Bit27,Bit28,Bit29,Bit30,Bit31)
#define SFR_L_N_EXT_IO(_ADDR, _NAME, \
                _B31, _B30, _B29, _B28, _B27, _B26, _B25, _B24, \
                _B23, _B22, _B21, _B20, _B19, _B18, _B17, _B16, \
                _B15, _B14, _B13, _B12, _B11, _B10, _B9,  _B8, \
                _B7,  _B6,  _B5,  _B4,  _B3,  _B2,  _B1,  _B0) \
                SFR_L_BITS_N_EXT_IO(_NAME, _ADDR, \
                             _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7, \
                             _B8,_B9,_B10,_B11,_B12,_B13,_B14,_B15, \
                             _B16,_B17,_B18,_B19,_B20,_B21,_B22,_B23, \
                             _B24,_B25,_B26,_B27,_B28,_B29,_B30,_B31)




#define DATA_SFR_B_R(_ADDR, _NAME) SFR_B_BITS(_NAME, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7)
#define DATA_SFR_W_R(_ADDR, _NAME)  DATA_SFR_W_BITS(_NAME, _ADDR, \
                                    Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                    Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define DATA_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)
#define DATA_SFR_B2_N(_ADDR, _NAME1, _NAME2, _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
                 DATA_SFR_B2_BITS_N(_NAME1, _NAME2, _ADDR, \
                               Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                               _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7)
#define DATA_SFR_W_N(_ADDR, _NAME, _B15, _B14, _B13, _B12, _B11, _B10, _B9, _B8, \
                              _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
                DATA_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)
#define DATA_SFR_W_N_BYTENAME(_ADDR, _NAME, _NAMEL, _NAMEH, _B15, _B14, _B13, _B12, \
                              _B11, _B10, _B9, _B8, \
                              _B7, _B6, _B5, _B4, _B3, _B2, _B1, _B0) \
                DATA_SFR_W_BITS_N_BYTENAME(_NAME, _NAMEL, _NAMEH, _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)
#define DATA_SFR_W_BYTENAME(_ADDR, _NAME, _NAMEL, _NAMEH) \
                DATA_SFR_W_BITS_BYTENAME(_NAME, _NAMEL, _NAMEH, _ADDR, \
                             Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                             Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15)
#define DATA_SFR_L_N(_ADDR, _NAME, \
                _B31, _B30, _B29, _B28, _B27, _B26, _B25, _B24, \
                _B23, _B22, _B21, _B20, _B19, _B18, _B17, _B16, \
                _B15, _B14, _B13, _B12, _B11, _B10, _B9,  _B8, \
                _B7,  _B6,  _B5,  _B4,  _B3,  _B2,  _B1,  _B0) \
                DATA_SFR_L_BITS_N(_NAME, _ADDR, \
                             _B0,_B1,_B2,_B3,_B4,_B5,_B6,_B7, \
                             _B8,_B9,_B10,_B11,_B12,_B13,_B14,_B15, \
                             _B16,_B17,_B18,_B19,_B20,_B21,_B22,_B23, \
                             _B24,_B25,_B26,_B27,_B28,_B29,_B30,_B31)
#define DATA_SFR_L(_ADDR,_NAME) DATA_SFR_L_BITS(_NAME, _ADDR, \
                                        Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7, \
                                        Bit8,Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15, \
                                        Bit16,Bit17,Bit18,Bit19,Bit20,Bit21,Bit22,Bit23, \
                                        Bit24,Bit25,Bit26,Bit27,Bit28,Bit29,Bit30,Bit31)
#define DATA_SFR_L_BYTENAME(_ADDR,_NAME,_NAME0,_NAME1,_NAME2,_NAME3) DATA_SFR_L_BITS_BYTENAME(_NAME,_NAME0,_NAME1,_NAME2,_NAME3,_ADDR,)


#endif /* __IOMACRO_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -