/** * @Function void CT_IIC_Stop(void) * @description 产生IIC停止信号 * @Input void * @Return void */ void CT_IIC_Stop(void) { CT_SDA_OUT();//sda线输出 CT_IIC_SCL=1; delay_us(30); CT_IIC_SDA=0;//STOP:when CLK is high DATA change form low to high CT_Delay(); CT_IIC_SDA=1;//发送I2C总线结束信号 }
/** * @Function void CT_IIC_Start(void) * @description 产生IIC起始信号 * @Input void * @Return void */ void CT_IIC_Start(void) { CT_SDA_OUT(); //sda线输出 CT_IIC_SDA=1; CT_IIC_SCL=1; delay_us(30); CT_IIC_SDA=0; //START:when CLK is high,DATA change form high to low CT_Delay(); CT_IIC_SCL=0; //钳住I2C总线,准备发送或接收数据 }
//不产生ACK应答 void CT_IIC_NAck(void) { CT_IIC_SCL=0; CT_SDA_OUT(); CT_IIC_SDA=1; delay_us(1); CT_IIC_SCL=1; delay_us(1); CT_IIC_SCL=0; }
/** * @Function void CT_IIC_NAck(void) * @description 不产生ACK应答 * @Input void * @Return void */ void CT_IIC_NAck(void) { CT_IIC_SCL=0; CT_SDA_OUT(); CT_Delay(); CT_IIC_SDA=1; CT_Delay(); CT_IIC_SCL=1; CT_Delay(); CT_IIC_SCL=0; }
//IIC发送一个字节 //返回从机有无应答 //1,有应答 //0,无应答 void CT_IIC_Send_Byte(u8 txd) { u8 t; CT_SDA_OUT(); CT_IIC_SCL=0;//拉低时钟开始数据传输 for(t=0;t<8;t++) { CT_IIC_SDA=(txd&0x80)>>7; txd<<=1; CT_IIC_SCL=1; delay_us(1); CT_IIC_SCL=0; delay_us(1); } }