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

📄 24c04.c

📁 24 系列存储器驱动
💻 C
字号:
#include <reg51.h>
#include <intrins.h>
#define somenop(); _nop_();_nop_();_nop_();_nop_();_nop_();
sbit SDA=0x91;
sbit SCL=0x90;

void I2CStart(void)
{
 SDA=1;
 somenop();
 SCL=1;
 somenop();
 SDA=0;
 somenop();
 SCL=0;
 somenop();
} 

void I2CStop(void)
{
 SDA=0;
 somenop();
 SCL=1;
 somenop();
 SDA=1;
 somenop();
 SCL=0;
 somenop();
}

void I2CInit(void)
{
 SCL=0;
 somenop();
 I2CStop();
} 

bit I2CClock(void)
{
 bit temp;
 somenop();
 SCL=1;
 _nop_();_nop_();_nop_();
 temp=SDA;
 _nop_();_nop_();
 SCL=0;
 somenop();
 return(temp);
}  

bit I2CSendByte(char I2CData)
{
 register unsigned char i;
 for(i=0;i<8;i++)
 {
  SDA=(bit)(I2CData&0x80);
  I2CData<<=1;
  I2CClock();
 }
 SDA=1;
 return(~I2CClock());
}   
 
unsigned char I2CReceiveByte(void)
{
 unsigned char I2CData=0;
 register unsigned char i;   
 for(i=0;i<8;i++)
 {
  I2CData<<=1;
  if(I2CClock()) I2CData++;
 }
 return(I2CData);
}     

void I2CSendAck(void)
{
 SDA=0;
 I2CClock();
 SDA=1;
}

void I2CSendNotAck(void)
{
 SDA=1;
 I2CClock();
 SDA=1;
}
 
void Send(void)
{
 I2CInit();
 I2CStart();
 I2CSendByte(0xA0);
 I2CSendByte(0x80);
 I2CSendByte(0x77);
 I2CStop();
}  

void Receive(void) 
{
 I2CStart();
 I2CSendByte(0xA0);
 I2CSendByte(0x80);
 I2CStart();
 I2CSendByte(0xA1);
 ACC=I2CReceiveByte();
 I2CSendNotAck();
 I2CStop(); 
} 
void main(void)
{
 Send();
 Receive();
} 

⌨️ 快捷键说明

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