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

📄 iic.lst

📁 TSL256源程序驱动!通过其IIC口采集环境光光强
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   IIC                                                                   01/01/2002 04:01:32 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN .\IIC.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\Inc\IIC.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND PRINT(.\IIC.lst) OBJECT
                    -(.\IIC.obj)

line level    source

   1          //**********************************************************
   2          //**                     IIC驱动程序                   **
   3          //**          单片机: STC12C5410AD 主频: 24MHz          **
   4          //**              Jumping <2008.04.20>              **
   5          //**********************************************************
   6          
   7          //#include <REGx051.H>                                                          // AT89C4051头文件
   8          #include "../inc/STC12C5410AD.H"                                        // AT89C4051头文件
   9          #include <INTRINS.H>                                                            // 系统调令头文件
  10          #include "def.h"                                                                        // 类型定义文件
  11          #include "config.h"                                                                     // 配置头文件
  12          #include "IIC.h"                                                                        // 配置头文件
  13          #include "uart.h"                                                                       // 配置头文件
  14          
  15          //*****变量声明****
  16          INT CH0,CH1;     
  17          
  18          // *** 函数声明 ***
  19          void I2C_Start (void);
  20          void I2C_Stop (void);
  21          BOOL Send_Byte_I2C(BYTE tmData);
  22          BYTE Read_Byte_I2C_ACK();
  23          BYTE Read_Byte_I2C_NoACK();
  24          uchar TSL2561_read_byte( uchar addr);
  25          void InitTsl256x(void);
  26          INT GetLux(void);
  27          //BOOL Read_Data_I2C(BYTE iNum, unsigned int wAddr, BYTE tmData[64]);
  28          //BOOL Write_Data_I2C(BYTE iNum, unsigned int wAddr, BYTE tmData[64]);
  29          
  30          //***************************************************************************************
  31          unsigned int CalculateLux(unsigned int iGain, unsigned int tInt, unsigned int ch0, unsigned int ch1, int i
             -Type);
  32          
  33          //#pragma OPTIMIZE(5)
  34          
  35          /*******************************************************************************
  36          * 名    称: I2C_Start()
  37          * 功    能: 启动I2C操作
  38          * 入口参数: 无
  39          * 出口参数: 无
  40          *******************************************************************************/
  41          void I2C_Start (void)
  42          {
  43   1              uchar i;
  44   1      
  45   1              SCL = 1;
  46   1              SDA = 1;
  47   1      
  48   1              for(i=0; i<12; i++)
  49   1              _nop_ ();
  50   1      
  51   1              SDA = 0;
  52   1      
  53   1              for(i=0; i<12; i++)
C51 COMPILER V7.50   IIC                                                                   01/01/2002 04:01:32 PAGE 2   

  54   1              _nop_ ();
  55   1              
  56   1              SCL = 0;
  57   1      }
  58          
  59          
  60          /*******************************************************************************
  61          * 名    称: I2C_Stop()
  62          * 功    能: 结束I2C操作
  63          * 入口参数: 无
  64          * 出口参数: 无
  65          *******************************************************************************/
  66          void I2C_Stop (void)
  67          {
  68   1              uchar i;
  69   1      
  70   1              SCL = 0;
  71   1              SDA = 0;
  72   1      
  73   1              for(i=0; i<12; i++)
  74   1              _nop_ ();
  75   1              SCL = 1;
  76   1      
  77   1              for(i=0; i<12; i++)
  78   1              _nop_ ();
  79   1              SDA = 1;
  80   1                                                                      
  81   1      }
  82          /*********************************************/
  83          /*  name:  Send_Byte_I2C                     */
  84          /*  input: BYTE tmData                         */
  85          /*  output:     BOOL                             */
  86          /*  function: Send one tmData to 24256         */
  87          /*********************************************/
  88          BOOL Send_Byte_I2C(BYTE tmData)
  89          {
  90   1              BYTE i,temp;
  91   1              BOOL bSendOk;
  92   1              
  93   1              temp = tmData;
  94   1      
  95   1              SCL = 0;
  96   1      
  97   1              for(i=0; i<8; i++)
  98   1              _nop_ ();
  99   1      
 100   1              for(i=0; i<8; i++)
 101   1              {
 102   2                      if(temp & 0x80)
 103   2                              SDA = 1;
 104   2                      else
 105   2                              SDA = 0;
 106   2      
 107   2                      _nop_ ();
 108   2                      _nop_ ();
 109   2                      _nop_ ();
 110   2                      _nop_ ();
 111   2                      _nop_ ();
 112   2                      _nop_ ();
 113   2      
 114   2                      SCL = 1;
 115   2                      temp = _crol_(temp,1);
C51 COMPILER V7.50   IIC                                                                   01/01/2002 04:01:32 PAGE 3   

 116   2      
 117   2                      _nop_ ();
 118   2                      _nop_ ();
 119   2                      _nop_ ();
 120   2                      _nop_ ();
 121   2                      _nop_ ();
 122   2                      _nop_ ();
 123   2      
 124   2                      SCL = 0;
 125   2      
 126   2                      _nop_ ();
 127   2                      _nop_ ();
 128   2                      _nop_ ();
 129   2                      _nop_ ();
 130   2                      _nop_ ();
 131   2                      _nop_ ();
 132   2      
 133   2              }
 134   1              
 135   1              for(i=0; i<5; i++)
 136   1              _nop_ ();
 137   1              
 138   1              SCL = 1;
 139   1              SDA = 1;        
 140   1              _nop_ ();//jp
 141   1              _nop_ ();//jp
 142   1              _nop_ ();//jp
 143   1              bSendOk = FALSE;
 144   1              for(i=0; i<10; i++)
 145   1              {
 146   2                      _nop_ ();       
 147   2                      if(!SDA) {bSendOk = TRUE;break;} //sda =0 应答信号
 148   2              }
 149   1       //   ACC = P1;
 150   1      /*
 151   1              if(SDA)   //sda =0 应答信号
 152   1              {
 153   1                      bSendOk = FALSE;
 154   1              }
 155   1              else
 156   1              bSendOk = TRUE;*/
 157   1              SCL = 0;
 158   1              return bSendOk;
 159   1      }
 160          
 161          
 162          /*********************************************/
 163          /*  name:  Read_Byte_I2C_ACK                 */
 164          /*  input: none                              */
 165          /*  output:     BYTE tmData                         */
 166          /*  function: Send one tmData to 24256         */
 167          /*********************************************/
 168          BYTE Read_Byte_I2C_ACK()
 169          {
 170   1              BYTE i;
 171   1              BYTE tmData = 0;
 172   1      
 173   1      
 174   1              SDA=1;//
 175   1              _nop_ ();//jp
 176   1              _nop_ ();//jp
 177   1              _nop_ ();//jp
C51 COMPILER V7.50   IIC                                                                   01/01/2002 04:01:32 PAGE 4   

 178   1              _nop_ ();//jp
 179   1      
 180   1              for(i=0; i<8; i++)
 181   1              {
 182   2                      //tmData *= 2;
 183   2                      tmData <<= 1;
 184   2                      SCL = 1;
 185   2      
 186   2                      _nop_ ();
 187   2                      _nop_ ();
 188   2                      _nop_ ();
 189   2                      
 190   2                      _nop_ ();//jk
 191   2                      _nop_ ();//jk
 192   2                      _nop_ ();//jk
 193   2      
 194   2                      if(SDA)
 195   2                              tmData |= 0x01;
 196   2      
 197   2                      _nop_ ();//jk
 198   2                      _nop_ ();//jk
 199   2                      _nop_ ();//jk
 200   2      
 201   2                      SCL = 0;
 202   2      
 203   2                      _nop_ ();
 204   2                      _nop_ ();
 205   2                      _nop_ ();
 206   2                      _nop_ ();
 207   2                      _nop_ ();
 208   2              }
 209   1      
 210   1      
 211   1              SDA = 0;        
 212   1              _nop_ ();
 213   1              _nop_ ();
 214   1      
 215   1              SCL = 1;
 216   1              for(i=0; i<8; i++)
 217   1              _nop_ ();
 218   1              SCL=0;
 219   1      
 220   1              SDA = 1;
 221   1              
 222   1       
 223   1              return tmData;
 224   1      }
 225          
 226          
 227          /*******************************************************************************
 228          * 名    称: I2C_Start()
 229          * 功    能: 启动I2C操作
 230          * 入口参数: 无
 231          * 出口参数: 无
 232          *******************************************************************************/
 233          BYTE Read_Byte_I2C_NoACK()
 234          {
 235   1              BYTE i;
 236   1              BYTE tmData = 0;
 237   1              SDA=1;
 238   1              for(i=0; i<8; i++)
 239   1              {
C51 COMPILER V7.50   IIC                                                                   01/01/2002 04:01:32 PAGE 5   

 240   2                      tmData *= 2;
 241   2                      SCL = 1;
 242   2      

⌨️ 快捷键说明

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