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

📄 i2c.lst

📁 用c8051f320单片机,任选两个IO口进行模拟IIC操做,用软件IIC对加速度芯片MXC6020进行读写操作(IIC接口)
💻 LST
字号:
C51 COMPILER V7.20   I2C                                                                   05/15/2007 15:32:40 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe I2C.c DB OE

line level    source

   1          #include "MEMSIC.h"
   2          
   3          
   4          bit     Ack;
   5          uint8 xdata Temp0;
   6          uint8 xdata Temp1;
   7          uint8 xdata Temp2;
   8          uint8 xdata Temp3;
   9          int16 xdata Ax;
  10          int16 xdata Ay;
  11          
  12          
  13          void IIC_Start (void)
  14          {
  15   1              Sda=1;
  16   1              _nop_ ();
  17   1              _nop_ ();
  18   1              _nop_ ();
  19   1              _nop_ ();
  20   1              Scl=1;
  21   1              _nop_ ();
  22   1              _nop_ ();
  23   1              _nop_ ();
  24   1              _nop_ ();
  25   1              Sda=0;
  26   1              _nop_ ();
  27   1              _nop_ ();
  28   1              _nop_ ();
  29   1              _nop_ ();
  30   1              Scl=0;
  31   1              _nop_ ();
  32   1              _nop_ ();
  33   1              _nop_ ();
  34   1              _nop_ ();
  35   1      }
  36          
  37          void IIC_Stop (void)
  38          {
  39   1              Sda=0;
  40   1              _nop_ ();
  41   1              _nop_ ();
  42   1              _nop_ ();
  43   1              _nop_ ();
  44   1              Scl=0;
  45   1              _nop_ ();
  46   1              _nop_ ();
  47   1              _nop_ ();
  48   1              _nop_ ();
  49   1              Scl=1;
  50   1              _nop_ ();
  51   1              _nop_ ();
  52   1              _nop_ ();
  53   1              _nop_ ();
  54   1              Sda=1;
  55   1              _nop_ ();
C51 COMPILER V7.20   I2C                                                                   05/15/2007 15:32:40 PAGE 2   

  56   1              _nop_ ();
  57   1              _nop_ ();
  58   1              _nop_ ();
  59   1      }
  60          
  61          void IIC_Read_Ack (void)
  62          {
  63   1              Scl=1;
  64   1              _nop_ ();
  65   1              _nop_ ();
  66   1              _nop_ ();
  67   1              _nop_ ();
  68   1              if(Sda==1)
  69   1              {
  70   2                      Ack=0;
  71   2              }
  72   1              else
  73   1              {
  74   2                      Ack=1;
  75   2              }
  76   1              Scl=0;
  77   1              _nop_ ();
  78   1              _nop_ ();
  79   1              _nop_ ();
  80   1              _nop_ ();
  81   1      }
  82          
  83          
  84          void IIC_Write_Ack (void)
  85          {
  86   1              Sda=0;
  87   1              _nop_ ();
  88   1              _nop_ ();
  89   1              _nop_ ();
  90   1              _nop_ ();
  91   1              Scl=1;
  92   1              _nop_ ();
  93   1              _nop_ ();
  94   1              _nop_ ();
  95   1              _nop_ ();
  96   1              Scl=0;
  97   1              _nop_ ();
  98   1              _nop_ ();
  99   1              _nop_ ();
 100   1              _nop_ ();
 101   1      }
 102          
 103          void IIC_Write_NoAck (void)
 104          {
 105   1              Sda=1;
 106   1              _nop_ ();
 107   1              _nop_ ();
 108   1              _nop_ ();
 109   1              _nop_ ();
 110   1              Scl=1;
 111   1              _nop_ ();
 112   1              _nop_ ();
 113   1              _nop_ ();
 114   1              _nop_ ();
 115   1              Scl=0;
 116   1              _nop_ ();
 117   1              _nop_ ();
C51 COMPILER V7.20   I2C                                                                   05/15/2007 15:32:40 PAGE 3   

 118   1              _nop_ ();
 119   1              _nop_ ();
 120   1      }
 121          
 122          unsigned char IIC_Read_Byte (void)
 123          {
 124   1          uint8 bitCount;
 125   1          uint8 Temp;
 126   1      
 127   1              Sda=1;
 128   1              for(bitCount=0x00;bitCount<0x08;bitCount++)
 129   1              {
 130   2                      Scl=1;
 131   2                      _nop_ ();
 132   2                      _nop_ ();
 133   2                      _nop_ ();
 134   2                      _nop_ ();
 135   2                      Temp=Temp<<1;
 136   2                      if(Sda==1)
 137   2                      {
 138   3                              Temp+=0x01;
 139   3                      }
 140   2                      Scl=0;
 141   2                      _nop_ ();
 142   2                      _nop_ ();
 143   2                      _nop_ ();
 144   2                      _nop_ ();
 145   2              }
 146   1              return(Temp);
 147   1      }
 148          
 149          void IIC_Write_Byte (unsigned char a)
 150          {
 151   1          uint8 bitCount;
 152   1          uint8 Temp;
 153   1              
 154   1              for(bitCount=0x00;bitCount<0x08;bitCount++)
 155   1              {
 156   2                      Temp=a;
 157   2                      if((Temp<<bitCount)&0x80)
 158   2                      {
 159   3                              Sda=1;
 160   3                      }
 161   2                      else
 162   2                      {
 163   3                              Sda=0;
 164   3                      }
 165   2                      Scl=1;
 166   2                      _nop_ ();
 167   2                      _nop_ ();
 168   2                      _nop_ ();
 169   2                      _nop_ ();
 170   2                      Scl=0;
 171   2              }
 172   1      }
 173          
 174          void Read_Acc (void)                                    //read acceleration
 175          {
 176   1          IIC_Start ();
 177   1              IIC_Write_Byte (0x20);
 178   1              IIC_Read_Ack ();
 179   1              IIC_Write_Byte (0x01);
C51 COMPILER V7.20   I2C                                                                   05/15/2007 15:32:40 PAGE 4   

 180   1              IIC_Read_Ack ();
 181   1              IIC_Stop ();
 182   1      
 183   1              IIC_Start ();
 184   1              IIC_Write_Byte (0x21);
 185   1              IIC_Read_Ack ();
 186   1              *(&Temp0)=IIC_Read_Byte ();
 187   1              IIC_Write_Ack ();
 188   1              *(&Temp1)=IIC_Read_Byte ();
 189   1              IIC_Write_Ack ();
 190   1              *(&Temp2)=IIC_Read_Byte ();
 191   1              IIC_Write_Ack ();
 192   1              *(&Temp3)=IIC_Read_Byte ();
 193   1              IIC_Write_NoAck ();
 194   1              IIC_Stop ();
 195   1      
 196   1              Ax=Temp0;
 197   1              Ax=Ax<<8;
 198   1              Ax+=Temp1;
 199   1              Ay=Temp2;
 200   1              Ay=Ay<<8;
 201   1              Ay+=Temp3;
 202   1      }


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


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

⌨️ 快捷键说明

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