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

📄 i2ctest.lst

📁 电子时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 1   


C51 COMPILER V7.02a, COMPILATION OF MODULE I2CTEST
OBJECT MODULE PLACED IN i2ctest.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE i2ctest.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1                                                  //i1c test//
   2                                          
   3                                                  #include        "ADUC812.h"
   4                                                  #include        "math.h"
   5                                                  #include        "intrins.h"
   6                                                  #include        "string.h"
   7                                                  #include        "stdio.h"
   8                                                  
   9                                                  sbit    led=P2^1;
  10                                                  sbit    speak=P2^3;
  11                                                  sbit    SDA=P3^2;
  12                                                  sbit    SCL=P3^3;       
  13                                                  #define deviceadd 0xa0
  14                                                  
  15                                                  
  16                                                  //************* Delay  *********//      
  17                                                  void delay(int n)
  18                                                  {
  19   1                                                      int     i;
  20   1                                                      for(i=0;i<=n;i++)
  21   1                                                      {
  22   2                                                              _nop_();
  23   2                                                      }
  24   1                                              }
  25                                                  
  26                                                  //************* Delay N ms *********//  
  27                                                  void delay_ms(int n)
  28                                                  {
  29   1                                                      int     i,j;
  30   1                                                      for(i=0;i<=n;i++)
  31   1                                                      {
  32   2                                                              for(j=0;j<=50;j++)                      //** Delay 1 ms **//
  33   2                                                              {
  34   3                                                                      _nop_();
  35   3                                                              }
  36   2                                                      }
  37   1                                              }
  38                                                  
  39                                                  
  40                                                  //**************Start**********//
  41                                                  void I2C_start(void)
  42                                                  {
  43   1                                                      SDA=1;
  44   1                                                      SCL=1;
  45   1                                                      delay(3);
  46   1                                                      SDA=0;
  47   1                                                      delay(3);
  48   1                                                      SCL=0;
  49   1                                              }
  50                                                  
  51                                                  //*************Stop***********//
  52                                                  void I2C_stop(void)
  53                                                  {
  54   1                                                      SDA=0;
  55   1                                                      SCL=1;
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 2   

  56   1                                                      delay(3);
  57   1                                                      SDA=1;
  58   1                                                      delay(3);
  59   1                                                      SCL=0;
  60   1                                              }
  61                                                  
  62                                                  //*************Ack**************//
  63                                                  void I2C_ack(void)
  64                                                  {
  65   1                                                      SDA=0;
  66   1                                                      SCL=1;
  67   1                                                      delay(3);
  68   1                                                      SCL=0;
  69   1                                                      SDA=1;
  70   1                                              }
  71                                                  
  72                                                  //*************No Ack*********//
  73                                                  void I2C_nack(void)
  74                                                  {
  75   1                                                      SDA=1;
  76   1                                                      SCL=1;
  77   1                                                      delay(3);
  78   1                                                      SCL=0;
  79   1                                                      SDA=0;
  80   1                                              }
  81                                                  
  82                                                  //*********Check ack signal*******//
  83                                                  bit I2C_Cack(void)
  84                                                  {
  85   1                                                      bit a;
  86   1                                                      SDA=1;
  87   1                                                      SCL=1;
  88   1                                                      delay(1);
  89   1                                                      a=SDA;
  90   1                                                      delay(1);
  91   1                                                      SCL=0;
  92   1                                                      delay(3);
  93   1                                                      if(a==1)
  94   1                                                      {
  95   2                                                              return  1;
  96   2                                                      }
  97   1                                                      else
  98   1                                                      {
  99   2                                                              return  0;
 100   2                                                      }
 101   1                                              }
 102                                                          
 103                                                  //**********Send a Bety*********//
 104                                                  void I2C_Send_byte(char da)
 105                                                  {
 106   1                                                      unsigned char i;
 107   1                                                      for(i=0;i<8;i++)
 108   1                                                      {
 109   2                                                              if((da<<i)&0x80)
 110   2                                                              {
 111   3                                                              SDA=1;                  //send "1"//
 112   3                                                              SCL=1;
 113   3                                                              delay(3);
 114   3                                                              SCL=0;
 115   3                                                              SDA=0;
 116   3                                                              delay(3);
 117   3                                                              }
C51 COMPILER V7.02a   I2CTEST                                                              09/30/2004 14:29:31 PAGE 3   

 118   2                                                              else
 119   2                                                              {
 120   3                                                              SDA=0;                  //send "0"//
 121   3                                                              SCL=1;
 122   3                                                              delay(3);
 123   3                                                              SCL=0;
 124   3                                                              delay(3);       
 125   3                                                              }
 126   2                                                      }
 127   1                                              }
 128                                                          
 129                                                  //*************receive a byte *********//
 130                                                  unsigned char I2C_Receive_byte(void)
 131                                                  {
 132   1                                                      unsigned char i,da=0;
 133   1                                                      bit     a;
 134   1                                                      for(i=0;i<8;i++)
 135   1                                                      {
 136   2                                                              SDA=1;
 137   2                                                              SCL=1;
 138   2                                                              delay(3);
 139   2                                                              a=SDA;
 140   2                                                              delay(3);
 141   2                                                              SCL=0;
 142   2                                                              if(a==1)
 143   2                                                              {
 144   3                                                                      da=da<<1;
 145   3                                                                      da=da|0x01;
 146   3                                                              }
 147   2                                                              else
 148   2                                                              {
 149   3                                                                      da=da<<1;
 150   3                                                              }
 151   2                                                      }
 152   1                                                      return da;
 153   1                                              }

⌨️ 快捷键说明

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