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

📄 iic.lst

📁 温度仪表软件
💻 LST
字号:
C51 COMPILER V8.05a   IIC                                                                  09/27/2008 09:32:24 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN .\hex\iic.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE src\iic.c BROWSE INCDIR(.\h) DEBUG OBJECTEXTEND PRINT(.\iic.lst) OBJECT(.\h
                    -ex\iic.obj)

line level    source

   1          #include"reg52.h"
   2          #include"intrins.h"
   3          #include"interface.h"
   4          #include"my_type.h"
   5          #include"function.h"
   6          #include"global_var.h"
   7          
   8          /*******************IIC开始信号**************************/
   9          void start_iic()
  10          {
  11   1              IIC_SDA = 1;
  12   1              IIC_SCL = 1;
  13   1              Wait5us;
  14   1              IIC_SDA = 0;//下跳开始
  15   1              Wait5us;
  16   1              IIC_SCL = 0;//钳住iic总线,准备发送和接收数据
  17   1              Wait2us;
  18   1      }
  19          
  20          /*******************IIC结束信号**************************/
  21          void stop_iic()
  22          {
  23   1              IIC_SDA = 0;
  24   1              IIC_SCL = 1;
  25   1              Wait5us;
  26   1              IIC_SDA = 1;//上跳结束
  27   1              Wait5us;
  28   1              IIC_SCL = 0;//只有关闭I2C总线时才使IIC_SCL为低电平
  29   1              Wait2us;
  30   1      }
  31          
  32          /*******************IIC应答信号**************************/
  33          void ack_iic()
  34          {
  35   1              IIC_SDA = 0;
  36   1              IIC_SCL = 1;
  37   1              Wait5us;
  38   1              IIC_SCL = 0;
  39   1              IIC_SDA = 1;
  40   1              Wait2us;
  41   1      }
  42          
  43          /******************IIC非应答信号**************************/
  44          void nack_iic()
  45          {
  46   1              IIC_SDA = 1;
  47   1              IIC_SCL = 1;
  48   1              Wait5us;
  49   1              IIC_SCL = 0;
  50   1              IIC_SDA = 0;
  51   1              Wait2us;
  52   1      }
  53          
  54          /*******************IIC主写1字节数据**********************/
C51 COMPILER V8.05a   IIC                                                                  09/27/2008 09:32:24 PAGE 2   

  55          void write_byte(uchar c)
  56          {
  57   1              uchar i;
  58   1              for(i=0;i<8;i++)
  59   1              {
  60   2                      if(c&0x80)
  61   2                              IIC_SDA = 1;
  62   2                      else
  63   2                              IIC_SDA = 0;
  64   2                      IIC_SCL = 1;
  65   2                      Wait5us;
  66   2                      IIC_SCL = 0;
  67   2                      c<<=1;//准备下一位
  68   2              }
  69   1              IIC_SDA = 1;
  70   1              IIC_SCL = 1;//释放数据线,等待接收从机应答信号
  71   1              Wait5us;
  72   1              if(IIC_SDA == 0)
  73   1                      iic_ack = 1;//有应答信号
  74   1              else
  75   1                      iic_ack = 0;
  76   1              IIC_SCL = 0;
  77   1      }
  78          
  79          
  80          
  81          
  82          /*******************IIC主读1字节数据**********************/
  83          uchar read_byte()
  84          {
  85   1              uchar i;
  86   1              uchar r = 0;
  87   1              IIC_SDA = 1;//设置数据线为输入方式
  88   1              for(i=0;i<8;i++)
  89   1              {
  90   2                      r<<=1;
  91   2                      IIC_SCL = 1;//时钟高,数据有效
  92   2                      Wait5us;
  93   2                      if(1 == IIC_SDA)
  94   2                              r++;
  95   2                      IIC_SCL = 0;
  96   2              }
  97   1              return r;//主机作为接收器,单字节不应答也就相当与产生非应答信号
  98   1      }
  99           
 100           
 101           
 102          /*******************IIC主发n字节数据**********************/
 103          bit write_nbyte(uchar slave,uchar addr,uchar *s,uchar n)
 104          {
 105   1              uchar i;
 106   1              start_iic();//发开始信号
 107   1              write_byte(slave);//发从器件地址
 108   1              if(0 == iic_ack)
 109   1                      return 0;//没有收到应答信号
 110   1              write_byte(addr);//要写的首地址
 111   1              if(0 == iic_ack)
 112   1                      return 0;//没有收到应答信号
 113   1              for(i=0;i<n;i++)
 114   1              {
 115   2                      write_byte(*s);//数据地址指向的数据
 116   2                      if(0 == iic_ack)
C51 COMPILER V8.05a   IIC                                                                  09/27/2008 09:32:24 PAGE 3   

 117   2                              return 0;//没有收到应答信号
 118   2                      s++;
 119   2              }
 120   1              stop_iic();
 121   1              return 1;
 122   1      }
 123          
 124          /*******************IIC主读n字节数据**********************/
 125          bit read_nbyte(uchar slave,uchar addr,uchar *s,uchar n)
 126          {
 127   1              uchar i;
 128   1              start_iic();//发开始信号
 129   1              write_byte(slave);//写硬件地址
 130   1              if(0 == iic_ack)
 131   1                      return 0;//没有收到应答信号
 132   1              write_byte(addr);
 133   1              if(0 == iic_ack)
 134   1                      return 0;//没有收到应答信号
 135   1              start_iic();
 136   1              write_byte(slave|1)
 137   1              ;//读硬件地址
 138   1              if(0 == iic_ack)
 139   1                      return 0;//没有收到应答信号
 140   1              for(i=0;i<n;i++)
 141   1              {
 142   2                      *s = read_byte();
 143   2                      ack_iic();//主机应答从机,保证报文顺利进行
 144   2                      s++;
 145   2              }
 146   1              nack_iic();
 147   1              stop_iic();
 148   1              return 1;
 149   1      }
*** WARNING C316 IN LINE 149 OF src\iic.c: unterminated conditionals


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


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

⌨️ 快捷键说明

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