⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iic2.h

📁 包中包含了几个SC52控制TEA5767编程用到得C语言测试程序
💻 H
字号:
//---------------------------------------------------------------------------
//*****************************************************************//
//***************      IIC fuction   ******************************//
//*****************************************************************//
//---------------------------------------------------------------------------
sbit SCL=P1^0;
sbit SDA=P1^1;
//---------------------------------------------------------------------------
//unsigned char Readbyte(void);
void Writebyte(unsigned char wdata);
void WaitACK(void);
//void WriteACK(unsigned char ack);
void Stop(void);
void Start(void);
void Delay(void);
//---------------------------------------------------------------------------
/********************************************
            内部函数,延时
********************************************/
void Delay(void)
{	_nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_(); /*根据晶振频率制定延时时间*/
}
/********************************************
            内部函数,I2C开始
********************************************/
void Start(void)
{	
	//EA=0;
    SDA=1;
    SCL=1;
    Delay();
    SDA=0;
    Delay();
    SCL=0;
}
/********************************************
            内部函数,I2C结束
********************************************/
void Stop(void)
{	
	SDA=0;
    SCL=0;
    Delay();
    SCL=1;
    Delay();
    SDA=1;
    Delay();
    //EA=1;
}
 /********************************************
内部函数,输出ACK ,每个字节传输完成,输出ack=0,结束读书据,ack=1;
********************************************/
/*
void WriteACK(unsigned char ack)
{	
	SDA=ack;
    Delay();
    SCL=1;
    Delay();
    SCL=0;
}
*/
/********************************************
            内部函数,等待ACK
********************************************/
void WaitACK(void)
{   
	unsigned char errtime=20;
    SDA=1;
    Delay(); //读ACK
    SCL=1;
    Delay();
    while(SDA)
    {	errtime--;
        if(!errtime) 
		{
			Stop();
			//break;
		}
    }
    SCL=0;
    Delay();
}
/********************************************
            内部函数.输出数据字节
********************************************/
void Writebyte(unsigned char wdata)
{   unsigned char i;
    for(i=0;i<8;i++)
    {	if(wdata&0x80) SDA=1;
        else SDA=0;
        wdata<<=1;
        SCL=1;
        Delay();
        SCL=0;
    }
    WaitACK(); //如果通讯错误,将不能接收到ack
}
/********************************************
            内部函数.输入数据
********************************************/
/*
unsigned char Readbyte(void)
{	unsigned char i,bytedata=0x00;
    SDA=1;
    for(i=0;i<8;i++)
    {	SCL=1;
        bytedata<<=1;
        bytedata|=SDA;
        SCL=0;
        Delay();
    }
    return(bytedata);
}
*/
//-------------------end 24CXX.H-----------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -