管理员 
    
	- 积分
 - 165598
 
        - 金钱
 - 165598 
 
       - 注册时间
 - 2010-12-1
 
      - 在线时间
 - 2121 小时
 
 
 
 | 
 
 
发表于 2013-7-13 19:28:26
|
显示全部楼层
 
 
 
////////////////////////////////////////////////////////////////////////////////
 //以下代码实现IO位定义操作
 //比如定义PORTA.7输出,可以用 Aout_bit.ODR7来定义.
 //比如定义PORTC.3输入,可以用 Cin_bit.IDR3来定义. 
 #define __READ_WRITE			//可读写
 #define __READ          const	//只读
 //IO位定义实现结构体
 #define __IO_REG8_BIT(NAME,ADDRESS,ATTRIBUTE,BIT_STRUCT)  \
 __near __no_init volatile ATTRIBUTE union   \
 {                                           \
 	unsigned char NAME;                     \
 	BIT_STRUCT NAME ## _bit;                \
 }@ADDRESS;
 //IO位输出结构体
 typedef struct
 {
   unsigned char ODR0     : 1;
   unsigned char ODR1     : 1;
   unsigned char ODR2     : 1;
   unsigned char ODR3     : 1;
   unsigned char ODR4     : 1;
   unsigned char ODR5     : 1;
   unsigned char ODR6     : 1;
   unsigned char ODR7     : 1;
 }__BITS_ODR;
 //IO位输入结构体
 typedef struct
 {
   unsigned char IDR0     : 1;
   unsigned char IDR1     : 1;
   unsigned char IDR2     : 1;
   unsigned char IDR3     : 1;
   unsigned char IDR4     : 1;
   unsigned char IDR5     : 1;
   unsigned char IDR6     : 1;
   unsigned char IDR7     : 1;
 } __BITS_IDR;
 __IO_REG8_BIT(PAout,0x5000,__READ_WRITE,__BITS_ODR);	//PA输出口
 __IO_REG8_BIT(PAin,0x5001,__READ,__BITS_IDR);			//PA输入口
 __IO_REG8_BIT(PBout,0x5005,__READ_WRITE,__BITS_ODR);	//PB输出口
 __IO_REG8_BIT(PBin,0x5006,__READ,__BITS_IDR);			//PB输入口
 __IO_REG8_BIT(PCout,0x500A,__READ_WRITE,__BITS_ODR);	//PC输出口
 __IO_REG8_BIT(PCin,0x500B,__READ,__BITS_IDR);			//PC输入口
 __IO_REG8_BIT(PDout,0x500F,__READ_WRITE,__BITS_ODR);	//PD输出口
 __IO_REG8_BIT(PDin,0x5010,__READ,__BITS_IDR);			//PD输入口
 __IO_REG8_BIT(PEout,0x5014,__READ_WRITE,__BITS_ODR);	//PE输出口
 __IO_REG8_BIT(PEin,0x5015,__READ,__BITS_IDR); 			//PE输入口
 __IO_REG8_BIT(PFout,0x5019,__READ_WRITE,__BITS_ODR);	//PF输出口
 __IO_REG8_BIT(PFin,0x501A,__READ,__BITS_IDR);			//PF输入口
 __IO_REG8_BIT(PGout,0x501E,__READ_WRITE,__BITS_ODR);	//PG输出口
 __IO_REG8_BIT(PGin,0x501F,__READ,__BITS_IDR);			//PG输入口
 __IO_REG8_BIT(PHout,0x5023,__READ_WRITE,__BITS_ODR);	//PH输出口
 __IO_REG8_BIT(PHin,0x5024,__READ,__BITS_IDR);			//PH输入口
 __IO_REG8_BIT(PIout,0x5028,__READ_WRITE,__BITS_ODR);	//PI输出口
 __IO_REG8_BIT(PIin,0x5029,__READ,__BITS_IDR);  			//PI输入口
 //////////////////////////////////////////////////////////////////////////////// |   
 
 
 
 |