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

📄 i2c.lst

📁 用C语言编写的GSM-SIM驱动程序包
💻 LST
字号:
C51 COMPILER V8.06   I2C                                                                   12/25/2007 08:55:45 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE I2C.c BROWSE MODDP2 DEBUG OBJECTEXTEND

line level    source

   1          /**********************************
   2          函数名:I2C.c
   3          功  能:AT24C32读写函数
   4          **********************************/
   5          #include <W77C32.h>
   6          #include <intrins.h>
   7          #include "hal.h"
   8          #include "I2C.h"
   9          
  10          //I2C起始
  11          void I2C_START(void)
  12          {I2C_SCL=1;
  13   1       _NOP();
  14   1       I2C_SDA=1;
  15   1       _NOP();
  16   1       I2C_SDA=0;
  17   1       _NOP();
  18   1       I2C_SCL=0;
  19   1       _NOP();
  20   1       }
  21          
  22          //I2C停止
  23          void I2C_STOP(void)
  24          {I2C_SDA=0;
  25   1       _NOP();
  26   1       I2C_SCL=1;
  27   1       _NOP();
  28   1       I2C_SDA=1;
  29   1       _NOP();
  30   1       }
  31          
  32          //等待I2C应答
  33          void I2C_ACK(void)
  34          {uint i=0xffff;
  35   1       I2C_SDA=1;
  36   1       _NOP();
  37   1       I2C_SCL=1;
  38   1       _NOP();
  39   1       do{i--;
  40   2          if(I2C_SDA!=1)
  41   2            {I2C_SCL=0;i=0;}
  42   2          }while(i!=0);
  43   1       I2C_SCL=0;
  44   1       _NOP();
  45   1       }
  46          
  47          //I2C写8位
  48          void I2C_WRITE_8BIT(uchar dat)
  49          {uchar i;
  50   1       for(i=0;i<8;i++)
  51   1       {I2C_SDA=dat&0x80;
  52   2        _NOP();
  53   2        I2C_SCL=1;
  54   2        _NOP();
  55   2        I2C_SCL=0;
C51 COMPILER V8.06   I2C                                                                   12/25/2007 08:55:45 PAGE 2   

  56   2        _NOP();
  57   2        dat<<=1;
  58   2        }
  59   1        I2C_ACK();
  60   1       }
  61          
  62          //I2C读8位
  63          uchar I2C_READ_8BIT(void)
  64          {uchar i,dat=0;
  65   1       I2C_SDA=1;
  66   1       for(i=0;i<8;i++)
  67   1        {I2C_SCL=1;
  68   2         _NOP();
  69   2         if(I2C_SDA==1)
  70   2           {dat|=0x01;}
  71   2         I2C_SCL=0;
  72   2         if(i<7)
  73   2         {dat<<=1;}
  74   2         }
  75   1       return(dat);
  76   1       }
  77          
  78          //I2C读指定地址数据
  79          uchar I2C_READ(uint addr)
  80          {uchar dat;
  81   1       I2C_START();
  82   1       I2C_WRITE_8BIT(OP_WRITE);
  83   1       I2C_WRITE_8BIT((uchar)(addr/256));
  84   1       I2C_WRITE_8BIT((uchar)(addr%256));
  85   1       I2C_START();
  86   1       I2C_WRITE_8BIT(OP_READ);
  87   1       dat=I2C_READ_8BIT();
  88   1       I2C_STOP();
  89   1       return(dat);
  90   1       }
  91          
  92          //I2C写数据到指定地址
  93          void  I2C_WRITE(uint addr,uchar dat)
  94          {I2C_START();
  95   1       I2C_WRITE_8BIT(OP_WRITE);
  96   1       I2C_WRITE_8BIT((uchar)(addr/256));
  97   1       I2C_WRITE_8BIT((uchar)(addr%256));
  98   1       I2C_WRITE_8BIT(dat);
  99   1       I2C_STOP();
 100   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    232    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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