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

📄 i2c.lst

📁 CS8955控制TV软件。用MCU做模拟电视的控制。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   I2C                                                                  07/03/2008 18:27:38 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN .\OBJ\I2c.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE i2c\I2c.c LARGE BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\I2c.lst
                    -) OBJECT(.\OBJ\I2c.obj)

line level    source

   1          /******************************************************************************\
   2               Project Version:   MTKCARDVD()
   3          ********************************************************************************
   4               Filename:          I2c.c
   5          
   6               Author:            Alan Chan
   7          
   8               Company:           CoreTek/ACT Company
   9          
  10          ********************************************************************************
  11               File Version:      1.01
  12               File Created:      July 2007
  13          
  14               Compiled Using:    keil uVision2 Version 2.23 
  15          
  16          ********************************************************************************
  17               Files Required:
  18          
  19          ********************************************************************************
  20               File Description:
  21          
  22          ********************************************************************************
  23               File History:
  24          
  25          --------------------------------------------------------------------------------
  26            Date         Name           Description
  27          --------------------------------------------------------------------------------
  28            Mar. 2007    Alan Chan    File Created
  29            
  30          \******************************************************************************/
  31          #include "global.h"
  32          
  33          /****************************************************************************/
  34          void Delay1us(WORD Time)             // delay
  35          {
  36   1          for (;Time>0;Time--)
  37   1          {
  38   2            _nop_();_nop_();
  39   2          }     
  40   1      
  41   1      }
  42          
  43          void Delay1ms(WORD Time)             // delay   1ms
  44          {
  45   1              BYTE Counter;
  46   1         
  47   1              for(; Time > 0;   Time --)
  48   1              {
  49   2                      Counter   = 250;
  50   2                      while(--Counter)
  51   2                              _nop_();
  52   2                      Counter   = 250;
  53   2                      while(--Counter)
  54   2                              _nop_();
C51 COMPILER V8.05a   I2C                                                                  07/03/2008 18:27:38 PAGE 2   

  55   2              }
  56   1      }
  57          
  58          /****************************************************************************/
  59          //                                     Software IIC
  60          /****************************************************************************/
  61          //---------------------------------------------------------------------------
  62          void IIC_Start(BIT ch)
  63          {
  64   1          if (!ch)
  65   1          {
  66   2              ResSDA1;
  67   2              ResSCL1;
  68   2          }   
  69   1          else
  70   1          {
  71   2              ResSDA2;
  72   2              ResSCL2;
  73   2          }
  74   1      }
  75          
  76          //---------------------------------------------------------------------------
  77          void IIC_Stop(BIT ch)
  78          {
  79   1          if (!ch)
  80   1          {
  81   2              SetSDA1;
  82   2              ResSDA1;
  83   2              SetSCL1;
  84   2              while(!GetSCL1);
  85   2              SetSDA1;
  86   2          }
  87   1          else 
  88   1          {
  89   2              SetSDA2;
  90   2              ResSDA2;
  91   2              SetSCL2;
  92   2              while(!GetSCL2);
  93   2              SetSDA2;
  94   2          }
  95   1      }
  96          
  97          //---------------------------------------------------------------------------
  98          void IIC_Send1Byte(BIT ch, BYTE senddata)
  99          {
 100   1              BYTE i;
 101   1      
 102   1          if (!ch)
 103   1          {
 104   2              for(i = 0; i < 8; i++)
 105   2              {
 106   3                      if(senddata & 0x80)
 107   3                      {
 108   4                            SetSDA1;
 109   4                      }       
 110   3                      else
 111   3                      {
 112   4                              ResSDA1;
 113   4                      }       
 114   3                      
 115   3                      senddata <<=1;          
 116   3      
C51 COMPILER V8.05a   I2C                                                                  07/03/2008 18:27:38 PAGE 3   

 117   3                      SetSCL1;
 118   3              while(!GetSCL1);
 119   3                      ResSCL1;          
 120   3              }
 121   2              
 122   2              ResSCL1;
 123   2              SetSDA1;
 124   2              SetSCL1;
 125   2             while(!GetSCL1);
 126   2      
 127   2              if (GetSDA1)
 128   2              {
 129   3                      bNoAck = 1;
 130   3              }       
 131   2              else
 132   2                      bNoAck = 0;
 133   2              ResSCL1;
 134   2          }
 135   1          else
 136   1          {
 137   2              for(i = 0; i < 8; i++)
 138   2              {
 139   3                      if(senddata & 0x80)
 140   3                      {
 141   4                            SetSDA2;
 142   4                      }       
 143   3                      else
 144   3                      {
 145   4                              ResSDA2;
 146   4                      }       
 147   3                      
 148   3                      senddata <<=1;          
 149   3      
 150   3                      SetSCL2;
 151   3                    while(!GetSCL2);
 152   3                      ResSCL2;          
 153   3              }
 154   2              
 155   2              ResSCL2;
 156   2              SetSDA2;
 157   2              SetSCL2;
 158   2             while(!GetSCL2);
 159   2      
 160   2              if (GetSDA2)
 161   2                      bNoAck = 1;
 162   2              else
 163   2                      bNoAck = 0;
 164   2              ResSCL2;
 165   2          }
 166   1      }
 167          
 168          //---------------------------------------------------------------------------
 169          BYTE IIC_Read1Byte(BIT ch, BIT noack)
 170          {
 171   1              BYTE i,readdata=0;
 172   1      
 173   1          if (!ch)
 174   1          {
 175   2              for(i = 0; i < 8; i++)
 176   2              {
 177   3                      readdata <<= 1;
 178   3      
C51 COMPILER V8.05a   I2C                                                                  07/03/2008 18:27:38 PAGE 4   

 179   3                      SetSDA1;
 180   3                      SetSCL1;
 181   3                      while(!GetSCL1);
 182   3      //              Delay1us(1);
 183   3      
 184   3                      if(GetSDA1)
 185   3                              readdata |= 0x01;
 186   3                      ResSCL1;
 187   3              }       
 188   2              if(noack)
 189   2              {
 190   3                      SetSDA1;
 191   3              }       
 192   2              else
 193   2              {
 194   3                      ResSDA1;
 195   3              }       
 196   2      
 197   2              SetSCL1;
 198   2      // lun hahaha
 199   2            while(!GetSCL1);
 200   2              ResSCL1;
 201   2      // lun hahaha
 202   2              if(!noack)
 203   2              {
 204   3                      SetSDA1;
 205   3              }       
 206   2          }
 207   1          else
 208   1          {
 209   2              for(i = 0; i < 8; i++)
 210   2              {
 211   3                      readdata <<= 1;
 212   3      
 213   3                      SetSDA2;
 214   3                      SetSCL2;
 215   3                      while(!GetSCL2);
 216   3                      
 217   3                      if(GetSDA2)
 218   3                              readdata |= 0x01;
 219   3                      ResSCL2;
 220   3              }       
 221   2              if(noack)
 222   2              {
 223   3                      SetSDA2;
 224   3              }       
 225   2              else
 226   2              {

⌨️ 快捷键说明

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