IIC协议范例代码(自用)

1.起始信号

void IIC_Start()
{
	SCL = 1;
	SDA = 1;
	_nop_();
	SDA = 0;
	_nop_();
}

2.终止信号

void IIC_Stop()
{
	SCL = 1;
	SDA = 0;
	_nop_();
	SDA = 1;
	_nop_();
}

3.ARK应答信号

typedef unsigned char u8;

u8 IIC_ACK()
{
	u8 flag;	

	//SCL = 0;
	SDA = 1;    //第九个脉冲来到时 拉高数据线 使数据线处于空闲状态
	_nop_();
	SCL = 1;
	_nop_();
	flag = SDA;
	_nop_();
	SCL = 0;
	_nop_();

	return flag;
}

4.IIC发送一字节


void IIC_sendByte(u8 sendBuf)
{
	u8 i;
	for(i=0;i<8;i++){
		SCL = 0;
		sendBuf <<= 1;
		SDA = CY;
		_nop_();
		SCL = 1;
		_nop_();
		SCL = 0;
		_nop_();
	}
    IIC_ACK();
}


版权声明:本文为qq_54278925原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。