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

📄 24c02.c

📁 DS1820智能温控系统,使用1602液晶显示,51单片机控制,KEIL开发
💻 C
字号:
#include"24C02.h"	
 bit ack;
void delay5us()
{
  _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
}
void Start_I2C()
{
  SDA=1;
   _nop_();
   SCL=1;
   delay5us();
   SDA=0;
   delay5us();
   SCL=0;
   _nop_();
}
void Stop_I2C()
{
  SDA=0;
   _nop_();
   SCL=1;
   delay5us();
   SDA=1;
   delay5us();
   
 } 
void SendByte(unsigned char Data)
{
   unsigned char i;
   for (i=0;i<8;i++)
    {  
	   SDA=Data&0x80;
	   Data=Data<<1;
	   SCL=1;
	   delay5us();
       SCL=0;
	 } 
	_nop_();
    SDA=1;
   _nop_();
   SCL=1;
   if(SDA==1)
   ack=0;
   else 
    ack=1;
   SCL=0;
 }  

uchar RcvByte()
{
   uchar retc=0;
   uchar i;
   SDA=1;
     for ( i=0;i<8;i++)
	  {
	    SCL=0;
		delay5us();
         SCL=1;
		retc=retc<<1;
		if(SDA==1)retc++;
		_nop_();
	   }
	SCL=0;
	return(retc);
}
void Ack_I2C(bit a)
{
  if(a==0)
  SDA=0;
  else
  SDA=1;
  _nop_();
  SCL=1;
  delay5us();
  SCL=0;
  _nop_();
}
 void I2CSendByte(uchar suba,uchar Byte)
 {
   Start_I2C();			 // 启动总线
   SendByte(0XA0);		 //写器件地址
   SendByte(suba);		 //写数据地址
   SendByte(Byte);		 //写数据
   Stop_I2C();			 //结束总线
}
uchar I2CReadByte(uchar suba)
{
  uchar Byte;
  Start_I2C();			// 启动总线
  SendByte(0XA0);		//写器件地址
  SendByte(suba);		//写数据地址
  Start_I2C();		   // 重新启动总线
  SendByte(0XA0+1);	   //写器件地址并以下是读状态
  Byte=RcvByte();		//读指定地址中的数据
  Ack_I2C(1);			//应答
  Stop_I2C();			//结束总线
  return(Byte);
  }

⌨️ 快捷键说明

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