杰里之IIC IO口篇

#define IIC_PORT JL_PORTD
#define IIC_DAT 6
#define IIC_CLK 5

#define iic_clk_out() do{IIC_PORT->DIR &= ~BIT(IIC_CLK);IIC_PORT->PU &= ~BIT(IIC_CLK);}while(0)
#define iic_clk_h() do{IIC_PORT->OUT |= BIT(IIC_CLK);IIC_PORT->DIR &=~BIT(IIC_CLK);}while(0)
#define iic_clk_l() do{IIC_PORT->OUT &= ~BIT(IIC_CLK);IIC_PORT->DIR &=~BIT(IIC_CLK);}while(0)

#define iic_data_out() do{IIC_PORT->DIR &= ~BIT(IIC_DAT);IIC_PORT->PU &= ~BIT(IIC_DAT);}while(0)
#define iic_data_in() do{IIC_PORT->DIR |= BIT(IIC_DAT);IIC_PORT->PU |= BIT(IIC_DAT);}while(0)
#define iic_data_r() (IIC_PORT->IN&BIT(IIC_DAT))
#define iic_data_h() do{IIC_PORT->OUT |= BIT(IIC_DAT);IIC_PORT->DIR &= ~BIT(IIC_DAT);}while(0)
#define iic_data_l() do{IIC_PORT->OUT &= ~BIT(IIC_DAT);IIC_PORT->DIR &= ~BIT(IIC_DAT);}while(0)

/*
#define iic_data_out() do{IIC_PORT->DIR &= ~IIC_DAT;IIC_PORT->PU |= IIC_DAT;}while(0)
#define iic_data_in() do{IIC_PORT->DIR |= IIC_DAT;IIC_PORT->PU |= IIC_DAT;}while(0)
#define iic_data_r() (IIC_PORT->IN & IIC_DAT)
#define iic_data_h() do{IIC_PORT->OUT |= IIC_DAT;}while(0)
#define iic_data_l() do{IIC_PORT->OUT &=~IIC_DAT;}while(0)

#define iic_clk_out() do{IIC_PORT->DIR &=~IIC_CLK;IIC_PORT->PU |= IIC_CLK;}while(0)
#define iic_clk_h() do{IIC_PORT->OUT |= IIC_CLK;}while(0)
#define iic_clk_l() do{IIC_PORT->OUT &=~IIC_CLK;}while(0)
*/

你可能感兴趣的:(杰里之IIC IO口篇)