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

📄 i2c_24c02.h

📁 I2C 总线C语言集锦包括,PIC单片机,51单片机,AVR单片机.
💻 H
字号:


#include "at89x52.h"
#include "intrins.h"                              
        
#define uchar unsigned char
#define uint unsigned int
#define NOP(); {_nop_();_nop_();_nop_();_nop_();}

sbit SCL=P1^5;  //24c02 SCL
sbit SDA=P1^6;  //24c02 SDA
//sbit DOG=P1^5;  //狗


// 对24C02的读、写
// extern void delay_ms(unsigned int);
// extern void Read24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);
// extern void Write24c02(unsigned char *RamAddress,unsigned char RomAddress,unsigned char bytes);

/***************************************************************************/
void delay_ms(unsigned int number) 
{
   unsigned char temp;
   for(;number!=0;number--) 
   {
     for(temp=112;temp!=0;temp--) 
     {
      }
   }
}

/***************************************************************************/
void Start() 
{
   
   SDA=1;
   NOP();
   SCL=1;
   NOP();
   SDA=0;
   NOP();
   SCL=0;
   NOP();
}

/***************************************************************************/
void Stop() 
{
   SCL=0;
   NOP();
   SDA=0;
   NOP();
   SCL=1;
   NOP();
   SDA=1;
   NOP();
}

/***************************************************************************/
void Ack() 
{
   SDA=0;
   NOP();
   SCL=1;
   NOP();
   SCL=0;
   NOP();
   SDA=1;
   NOP();
}

/***************************************************************************/
void NoAck() 
{
   SDA=1;
   NOP();
   SCL=1;
   NOP();
   SCL=0;
   NOP();
}

/***************************************************************************/
bit TestAck() 
{
   bit ErrorBit;
   SDA=1;
   NOP();
   SCL=1;
   NOP();
   ErrorBit=SDA;
   SCL=0;
   NOP();
   return(ErrorBit);
}

/***************************************************************************/
void Write8Bit(unsigned char input) 
{
   unsigned char temp;
   for(temp=8;temp!=0;temp--) 
   {
     SDA=(bit)(input&0x80);
     SCL=1;
	 NOP();
     SCL=0;
	 NOP();
     input=input<<1;
   }
}

/***************************************************************************/
unsigned char Read8Bit() 
{
   unsigned char temp,rbyte=0;
   for(temp=8;temp!=0;temp--) 
   {
     SCL=1;
	 NOP();
     rbyte=rbyte<<1;
     rbyte=rbyte|((unsigned char)(SDA));
     SCL=0;
	 NOP();
   }
   return(rbyte);
}


/***************************************************************************/
void Write24c02(unsigned char Address,unsigned char Wdata) 
{
   Start();
   Write8Bit(0xa0);
   TestAck();
   Write8Bit(Address);
   TestAck();
  
   Write8Bit(Wdata);
   TestAck();
   
   Stop();
   delay_ms(10);
}


/***************************************************************************/
char Read24c02(unsigned char Address) 
{
   
//   unsigned char temp,rbyte;

   unsigned char Data;

   Start();
   Write8Bit(0xa0);
   TestAck();
   Write8Bit(Address);
   TestAck();
   Start();
   Write8Bit(0xa1);
   TestAck(); 
   Data=Read8Bit();
   NoAck();
   Stop();
   delay_ms(10);

   return (Data);
}

⌨️ 快捷键说明

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