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

📄 软件模拟i2c通信协议.txt

📁 基于I2C协议的读写程序,本人是用作IC卡读卡器用的
💻 TXT
字号:
/*I2C的开始*/
void I2CStart(void)
{
  EA=0;
  AT24C02_SDA=1; AT24C02_SCL=1; SomeNOP();//INI
  AT24C02_SDA=0; SomeNOP(); //START
  AT24C02_SCL=0;
}

/*I2C的结束*/
void I2CStop(void)
{
  AT24C02_SCL=0; AT24C02_SDA=0; SomeNOP(); //INI
  AT24C02_SCL=1; SomeNOP(); AT24C02_SDA=1; //STOP
  EA=1;
}

/*I2C的应答*/
WaitAck(void)
{
  unsigned char errtime=255;//因故障接收方无ACK,超时值为255。
  AT24C02_SDA=1;SomeNOP();
  AT24C02_SCL=1;SomeNOP();
  SystemError=0x10;
  while(AT24C02_SDA)
       { errtime--;
         if(!errtime)
           {  I2CStop();
              SystemError=0x11;
              return;
           }
       }
  AT24C02_SCL=0;
}


/*I2C的无应答(一般情况不用,除非有要求的器件)*/
 void SendNotAck(void)
 {
 AT24C02_SDA=1; SomeNOP();
 AT24C02_SCL=1; SomeNOP();
 AT24C02_SCL=0;
 }


/*I2C发送一个数据*/
void I2CSendByte(unsigned char ch)
{
  unsigned char i=8;
  while(i--)
       {
         AT24C02_SCL=0;_nop_();
         AT24C02_SDA=(bit)(ch&0x80); ch<<=1; SomeNOP();
         AT24C02_SCL=1; SomeNOP();
       }
  AT24C02_SCL=0;
}

/*I2C接收一个数据*/
unsigned char I2CReceiveByte(void)
{
  unsigned char i=8;
  unsigned char dat=0;
  AT24C02_SDA=1;
  while(i--)
       {
         dat<<=1;
         AT24C02_SCL=0;SomeNOP();
         AT24C02_SCL=1;SomeNOP();
         dat|=AT24C02_SDA;
       }
  AT24C02_SCL=0;
  return(dat);
}

⌨️ 快捷键说明

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