Beispiel #1
0
/**************************实现函数********************************************
*函数原型:void iic_ack(void)
*功  能:产生ACK应答
*******************************************************************************/
void iic_ack(void)
{
	IIC_SCL_L();
	SDA_OUT();
	IIC_SDA_L();
	delay_us(1);
	IIC_SCL_H();
	delay_us(1);
	IIC_SCL_L();
}
Beispiel #2
0
/**************************实现函数********************************************
*函数原型:void iic_start(void)
*功  能:产生IIC起始信号
*******************************************************************************/
void iic_start(void)
{
	SDA_OUT();	//sda线输出
	IIC_SDA_H();
	IIC_SCL_H();
	delay_us(1);
 	IIC_SDA_L();	//START:when CLK is high,DATA change form high to low 
	delay_us(1);
	IIC_SCL_L();	//钳住I2C总线,准备发送或接收数据 
}
Beispiel #3
0
/**************************实现函数********************************************
*函数原型:void iic_stop(void)
*功  能:产生IIC停止信号
*******************************************************************************/	  
void iic_stop(void)
{
	SDA_OUT();	//sda线输出
	IIC_SCL_L();
	IIC_SDA_L();	//STOP:when CLK is high DATA change form low to high
 	delay_us(1);
	IIC_SCL_H(); 
	IIC_SDA_H();	//发送I2C总线结束信号
	delay_us(1);
}
Beispiel #4
0
/**************************实现函数********************************************
*函数原型:void iic_send_8bits(uint8_t txd)
*功  能:IIC发送一个字节
*******************************************************************************/		  
void iic_send_8bits(uint8_t txd)
{                        
	uint8_t t;   
	SDA_OUT(); 	    
	IIC_SCL_L();	//拉低时钟开始数据传输
	for(t=0;t<8;t++)
	{              
		if( txd & 0x80 ) 
			IIC_SDA_H();
		else 
			IIC_SDA_L();
		txd <<= 1; 	  
		delay_us(1);
		IIC_SCL_H();
		delay_us(1);
		IIC_SCL_L();	
		delay_us(1);
	}	 
} 	 
Beispiel #5
0
void IIC_WriteBit(u8 Temp)
{
	u8 i;
	IIC_SDA_Out();
	IIC_SCL_L();
	for(i=0;i<8;i++)
	{
		if(Temp&0x80)
		{
			IIC_SDA_H();
		}
		else
		{
			IIC_SDA_L();
		}
		Temp<<=1;
		IIC_Delay(1);
		IIC_SCL_H();
		IIC_Delay(1);
		IIC_SCL_L();
	}
}