管理员
  
- 积分
- 165371
- 金钱
- 165371
- 注册时间
- 2010-12-1
- 在线时间
- 2110 小时
|
发表于 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输入口
//////////////////////////////////////////////////////////////////////////////// |
|