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

📄 i2c.c

📁 基于KeilC的I2C总线实际应用子程序
💻 C
字号:
/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
/*$$$$$$$$$$$$$$$$$$$$$$$24C01部分子程序$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/

sbit SDA	=	P2^7;
sbit SCL	=	P2^6;

//起动24C01时序//
void Start()
{ 
 	SCL=1; 
 	SDA=1; 
 	SDA=0; 
 	SCL=0;
}
//停止24C01时序//
void Stop()
{ 
	SDA=0; 
	SCL=1; 
	SDA=1;
}
/*;检测24C01的响应信号*/
bit ACK()
{   
	bit c;   
	SDA=1;   
	SCL=1;   
	c=SDA;   
	SCL=0;   
	return c;
}
/*;往24C01发一8位数据*/
void SendChar(Uchar ch)
{ 
	Uchar i; 
	i=8; 
	do  
	{   
		SDA=(ch&0x80);   
		SCL=1;   
		SCL=0;   
		ch<<=1;  
	}while(--i!=0);
}
/*;从24C01接收一8位数据*/
Uchar RecChar()
{ 
	Uchar i,j; 
	i=8; 
	do  
	{
		SCL=1;
		j=(j<<1)|SDA;
		SCL=0;
	}while(--i!=0);
	return j;
}
/*往24C01写多字节*/
void WriteBuf(Uint addr,Uchar idata *buf,Uchar count)
{ 
	Uchar c; 
	c=((*((Uchar *)&addr)))&0x02; 
	Start(); 
	SendChar(0xa0|c); 
	ACK(); 
	SendChar(addr); 
	ACK();
	do  
	{   
		SendChar(*buf++);   
		ACK();   
		if(count!=1)    
		{
			if(((++addr)&0x7)==0)     
			{      
				Stop();      
				for(c=0xff;c!=0;c--) ;      
				c=((*((Uchar *)&addr))<<1)&0x02;      
				Start();
				SendChar(0xa0|c);
				ACK();      
				SendChar(addr);      
				ACK();     
			}    
		}   
		else    
		{     
			Stop();     
			for(c=0xff;c!=0;c--) ;    
		}  
	}while(--count!=0); 
}
/*至少读2字节*/
void ReadBuf(Uint addr,Uchar idata *buf,Uchar count)
{  
	Uchar ch;  
	ch=((*((Uchar *)&addr))<<1)&0x02;  
	Start();  
	SendChar(0xa0|ch);  
	ACK();  
	SendChar(addr);  
	ACK();  
	Start();  
	SendChar(0xa1|ch);  
	ACK();  
	count--;
	do   
	{    
		*buf++=RecChar();    
		SDA=0;    
		SCL=1;    
		SCL=0;    
		SDA=1;   
	}while(--count!=0);  
	*buf=RecChar();   
	Stop(); 
}
/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
/*$$$$$$$$$$$$$$$$$$$$$$$24C01部分子程序结束$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/

⌨️ 快捷键说明

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