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

📄 hwi2c.lst

📁 世纪民生公司的带网络功能的单片机CS6209开发http服务器的演示源代码。
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   HWI2C                                                                 10/12/2006 15:31:41 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE HWI2C
OBJECT MODULE PLACED IN .\Release\HWI2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\lib\HWI2C.C LARGE OPTIMIZE(9,SIZE) BROWSE ORDER MODDP2 INCDIR(..\..\i
                    -nc\) DEBUG OBJECTEXTEND PRINT(.\Release\HWI2C.lst) OBJECT(.\Release\HWI2C.obj)

line level    source

   1          
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          #include "hpserver.h"
   5          #include "hwi2c.h"
   6          
   7          /*400K*/
   8          #define EEP_I2C_SPEED   0
   9          
  10          /*100K*/
  11          //#define EEP_I2C_SPEED   0x20
  12          
  13          /*50K*/
  14          //#define EEP_I2C_SPEED   0x40
  15          
  16          /*200K*/
  17          
  18          //#define EEP_I2C_SPEED   0x60
  19          //#define WAIT_LOOP_COUNT (600)
  20          #define WAIT_LOOP_COUNT (800)
  21          
  22          //#define I2C2_action     //If you want use I2C2,define it.
  23          
  24          xdata unsigned char I2C_CONdata _at_ I2C1_CON ;
  25          xdata unsigned char I2C_STAdata _at_ I2C1_STA ;
  26          xdata unsigned char I2C_TXdata _at_ I2C1_TX  ;
  27          xdata unsigned char I2C_RXdata _at_ I2C1_RX  ;
  28          
  29          //xdata unsigned char PORTB_EN _at_ 0xfff6;//PBOE;
  30          //xdata unsigned char PORTB _at_ 0xfff7;//BREG;
  31          unsigned char I2Cspeed=0x60;  //speed=200khz
  32          
  33          char c256_bytewrite(unsigned int des_addr,unsigned char wr_data)
  34          {
  35   1              unsigned char ready,tmp;
  36   1              unsigned char addr_L, addr_H;
  37   1              unsigned int i=0;
  38   1          addr_H = (unsigned char)(des_addr >> 8);
  39   1          addr_L = (unsigned char)des_addr ;
  40   1      
  41   1              I2Cspeed=EEP_I2C_SPEED;
  42   1          I2C_CONdata=I2Cspeed|0xa;
  43   1      
  44   1              ready=0;
  45   1              for (i=0;i<600;i++)
  46   1              {
  47   2              I2C_CONdata=I2Cspeed|0X13;   //Send Start
  48   2                  I2C_TXdata=0xa0;  //eeprom ID
  49   2              ready=wait_ack();
  50   2                      if (ready)
  51   2                              break;
  52   2              }
  53   1              if (!ready)
  54   1                      return 0;
C51 COMPILER V7.50   HWI2C                                                                 10/12/2006 15:31:41 PAGE 2   

  55   1      
  56   1          //Send address
  57   1          //==Send high byte
  58   1          I2C_CONdata=I2Cspeed|0X03;
  59   1          I2C_TXdata=addr_H;
  60   1          if (!wait_ack())
  61   1                      return 0;
  62   1      
  63   1          //==Send low byte
  64   1          I2C_CONdata=I2Cspeed|0X03;
  65   1          I2C_TXdata=addr_L;
  66   1          if (!wait_ack())
  67   1                      return 0;
  68   1      
  69   1          //==Send DATA
  70   1          I2C_CONdata=I2Cspeed|0X03;
  71   1          I2C_TXdata=wr_data;
  72   1          if (!wait_ack())
  73   1                      return 0;
  74   1      
  75   1          //Send Stop
  76   1          I2C_CONdata=I2Cspeed|0X0a;
  77   1          if (!wait_stop_ready())
  78   1                      return 0;
  79   1      
  80   1      
  81   1              return 1;
  82   1      }
*** WARNING C280 IN LINE 35 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
  83          char c256_seqwrite(unsigned int des_addr,unsigned char *wr_data,unsigned int len)
  84          {
  85   1              unsigned int tmp,data_offset;
  86   1              unsigned int len_tmp;
  87   1              unsigned int start_addr_tmp;
  88   1              start_addr_tmp=des_addr;
  89   1              len_tmp=len;
  90   1              data_offset=0;
  91   1      
  92   1              while (len_tmp>0)
  93   1              {
  94   2                      tmp=64-(start_addr_tmp&0x3f);
  95   2                      if (len_tmp<tmp)
  96   2                              tmp=len_tmp;
  97   2                      if (!c256_pagewrite(start_addr_tmp,&wr_data[data_offset],tmp))
  98   2                              return 0;
  99   2                      start_addr_tmp+=tmp;
 100   2                      len_tmp-=tmp;
 101   2                      data_offset+=tmp;
 102   2              }
 103   1              return 1;
 104   1      }
 105          char c256_pagewrite(unsigned int des_addr,unsigned char *wr_data,unsigned int len)
 106          {
 107   1              unsigned char ready,tmp;
 108   1              unsigned char addr_L, addr_H;
 109   1              unsigned int i=0;
 110   1      
 111   1              if (len==0)
 112   1                      return 0;
 113   1      
 114   1              /*is roll over?*/
 115   1              if (((des_addr&0x3f)+(len-1))>64)
C51 COMPILER V7.50   HWI2C                                                                 10/12/2006 15:31:41 PAGE 3   

 116   1                      return 0;
 117   1      
 118   1          addr_H = (unsigned char)(des_addr >> 8);
 119   1          addr_L = (unsigned char)des_addr ;
 120   1      
 121   1              I2Cspeed=EEP_I2C_SPEED;
 122   1          I2C_CONdata=I2Cspeed|0xa;
 123   1      
 124   1              ready=0;
 125   1              for (i=0;i<600;i++)
 126   1              {
 127   2              I2C_CONdata=I2Cspeed|0X13;   //Send Start
 128   2                  I2C_TXdata=0xa0;  //eeprom ID
 129   2              ready=wait_ack();
 130   2                      if (ready)
 131   2                              break;
 132   2              }
 133   1              if (!ready)
 134   1                      return 0;
 135   1      
 136   1          //Send address
 137   1          //==Send high byte
 138   1          I2C_CONdata=I2Cspeed|0X03;
 139   1          I2C_TXdata=addr_H;
 140   1          if (!wait_ack())
 141   1                      return 0;
 142   1      
 143   1          //==Send low byte
 144   1          I2C_CONdata=I2Cspeed|0X03;
 145   1          I2C_TXdata=addr_L;
 146   1          if (!wait_ack())
 147   1                      return 0;
 148   1      
 149   1          //==Send DATA
 150   1              for (i=0;i<len;i++)
 151   1              {
 152   2                  I2C_CONdata=I2Cspeed|0X03;
 153   2              I2C_TXdata=wr_data[i];
 154   2                  if (!wait_ack())
 155   2                              //printf("\nNo ack");
 156   2                              return 0;
 157   2              }
 158   1      
 159   1          //Send Stop
 160   1          I2C_CONdata=I2Cspeed|0X0a;
 161   1          if (!wait_stop_ready())
 162   1                      return 0;
 163   1      
 164   1              return 1;
 165   1      }
*** WARNING C280 IN LINE 107 OF ..\..\LIB\HWI2C.C: 'tmp': unreferenced local variable
 166          
 167          
 168          char c256_byteread(unsigned int addr)
 169          {
 170   1         unsigned char addr_L, addr_H;
 171   1         unsigned int i=0;
 172   1         unsigned char tmp,ready=0,ret_avl=0;
 173   1      
 174   1              I2Cspeed=EEP_I2C_SPEED;
 175   1          I2C_CONdata=I2Cspeed|0xa;
 176   1          addr_H = (unsigned char)(addr >> 8);
C51 COMPILER V7.50   HWI2C                                                                 10/12/2006 15:31:41 PAGE 4   

 177   1          addr_L = (unsigned char)addr ;
 178   1      
 179   1              ready=0;
 180   1              for (i=0;i<600;i++)
 181   1              {
 182   2              I2C_CONdata=I2Cspeed|0X13;   //Send Start
 183   2                  I2C_TXdata=0xa0;  //eeprom ID
 184   2              ready=wait_ack();
 185   2                      if (ready)
 186   2                              break;
 187   2              }
 188   1      
 189   1          //Send address
 190   1      
 191   1          //==Send high byte
 192   1          I2C_CONdata=I2Cspeed|0X03;

⌨️ 快捷键说明

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