//#include "user_iic.h" // // // ///*时钟线SCL高电平时,拉低数据线SDA-------------启动 //时钟线SCL高电平时,拉高数据线SDA-------------停止*/ ////产生IIC起始信号 //void IIC_Start(void) //{ // IIC_SDA_1(); // IIC_SCL_1(); // delay_us(4); // IIC_SDA_0();//START:when CLK is high,DATA change form high to low // delay_us(4); // IIC_SCL_0();//钳住I2C总线,准备发送或接收数据 //} ////产生IIC停止信号 //void IIC_Stop(void) //{ // IIC_SCL_0(); // IIC_SDA_0(); // delay_us(4); // IIC_SCL_1(); // IIC_SDA_1(); // delay_us(4); //} ////等待应答信号到来 ////返回值:1,接收应答失败 //// 0,接收应答成功 //uint8_t IIC_Wait_Ack(void) //{ // uint8_t ucErrTime=0; // IIC_SDA_1();delay_us(1); // IIC_SCL_1();delay_us(1); // while(READ_SDA()) // { // ucErrTime++; // if(ucErrTime>100) // { // IIC_Stop(); // return 1; // } // } // IIC_SCL_0();//时钟输出0 // return 0; //} ////产生ACK应答 //void IIC_Ack(void) //{ // IIC_SCL_0(); // IIC_SDA_0(); // delay_us(2); // IIC_SCL_1(); // delay_us(2); // IIC_SCL_0(); // IIC_SDA_1(); //} ////不产生ACK应答 //void IIC_NAck(void) //{ // IIC_SCL_0(); // IIC_SDA_1(); // delay_us(4); // IIC_SCL_1(); // delay_us(4); // IIC_SCL_0(); // IIC_SDA_1(); //} ////IIC发送一个字节 ////返回从机有无应答 ////1,有应答 ////0,无应答 //void IIC_Send_Byte(uint8_t txd) //{ // uint8_t t; // IIC_SCL_0();//拉低时钟开始数据传输 // for(t=0;t<8;t++) // { // if((txd&0x80)>>7) // { // IIC_SDA_1(); // } // else { // IIC_SDA_0(); // } // txd<<=1; // delay_us(2); //对TEA5767这三个延时都是必须的 // IIC_SCL_1(); // delay_us(2);; // IIC_SCL_0(); // delay_us(2); // } //} // // ////读1个字节,ack=1时,发送ACK,ack=0,发送nACK //uint8_t IIC_Read_Byte(unsigned char ack) //{ // unsigned char i,receive=0; // for(i=0;i<8;i++ ) // { // IIC_SCL_0(); // delay_us(2); // IIC_SCL_1(); // receive<<=1; // if(READ_SDA())receive++; // delay_us(1); // } // if (!ack) // IIC_NAck();//发送nACK // else // IIC_Ack(); //发送ACK // return receive; //} // // //