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

📄 i2c.c

📁 这是用W77E58编写的控制GSM模块
💻 C
字号:
/* YuanGao electronic designe co.ldt
   (c) Copyright 2000,2001, All Rights Reserved  */


#include "global.h"
#include "util.h"
#include "i2c.h"


void I2C_Init(void)
{

      I2C_SCL = 1;
      I2C_SDA = 1;

      i2c_delay();
      I2C_SCL = 0;
      I2C_SDA = 0;
      I2C_SDA = 0;

      I2C_SCL = 1;
      I2C_SDA = 1;

      i2c_delay();
      i2c_delay();
      I2C_SCL = 0;
      I2C_SDA = 0;

      i2c_delay();
      I2C_SDA = 0;

      I2C_SCL = 1;
      I2C_SDA = 1;

}



bit I2C_Clock(void)
{
     bit bdata sample;

     I2C_SCL = 1;
     i2c_delay();
     sample = I2C_SDA;

     I2C_SCL = 0;

     return(sample);
}

void I2C_Start(void)
{

     I2C_SCL = 1;
     I2C_SDA = 1;
     I2C_SDA = 0;
     i2c_delay();
     I2C_SCL = 0;
     i2c_delay();
}


void I2C_Stop(void)
{

     I2C_SDA = 0;
     i2c_delay();
     I2C_SCL = 1;
     i2c_delay();
     I2C_SDA = 1;

}


bit I2C_Send(unsigned char I2C_Data)
{
       unsigned char i;
       /*send 8 bits data*/
       for(i = 0;i<8;i++){
         I2C_SDA =(bit)(I2C_Data & 0x80);
         I2C_Data = I2C_Data << 1;
         I2C_Clock();

       }

       /*ask ack:*/
       I2C_SDA = 1;

       return(~I2C_Clock());
}

                     
void write_i2c(unsigned char I2C_ADDR,unsigned char I2C_DATA)
{

            I2C_Start();
            I2C_Send(I2C_ADDR);                         
            I2C_Send(I2C_DATA);                         
            I2C_Stop();

}


void i2c_delay(void)
{
      char i;
      for(i=0;i<2;i++);

}


⌨️ 快捷键说明

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