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

📄 i2c.c

📁 51单片机模拟i2c完整源代码
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
sbit scl=P3^3;
sbit sda=P3^4;
void delay1(uchar x)
{ 
  uchar i,j;
   for(i=x;i>0;i--)
    for(j=100;j>0;j--);

}
void delay()
{;;}
void start()    //开始
{
  sda=1;
  delay();
  scl=1;
  delay();
  sda=0;
  delay();
}
void stop()     //停止
{
  sda=0;
  delay();
  scl=1;
  delay();
  sda=1;
  delay();
}
void respons()  //应答
{
  uchar i;
  scl=1;
  while(sda==1&&i<250)
    i++;
  scl=0;
  delay();
}
void init()
{
scl=1;
sda=1;
}
void write_byte(uchar date)  //写一个字节
{
   uchar temp,j;
   temp=date;
   
   for(j=0;j<8;j++)
     {
       temp=temp<<1;
       scl=0;
       delay();
       sda=CY;
       delay();
       scl=1;
       delay();
       ; 
     }
   scl=0;
   delay();
   sda=1;
   delay();
}
uchar read_byte()
{
  uchar i,j,k;
  scl=0;
  delay();
  sda=1;
  delay();
  for(i=0;i<8;i++)
   {
     scl=1;
     delay();
     j=sda;
     k=(k<<1)|j;
     scl=0;
     delay();
    }
    return k;
}
void main()
{
init();

start();
write_byte(0xa0);
respons();
write_byte(3);
respons();
write_byte(0xA5);
respons();
stop();

delay1(100);

start();
write_byte(0xa0);
respons();
write_byte(3);
respons();
start();
write_byte(0xa1);
respons();
P0=read_byte();

while(1);

}

⌨️ 快捷键说明

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