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

📄 i2c.lst

📁 肯定是你喜欢的东西了 自己打开看看了 就知道了
💻 LST
字号:
C51 COMPILER V7.07   I2C                                                                   11/08/2007 09:01:05 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN i2c.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE i2c.c OPTIMIZE(2,SPEED) BROWSE DEFINE(monitor51) DEBUG OBJECTEXTEND

stmt level    source

   1           /*VIICC.H*/
   2          #pragma db cd small
   3          #include <intrins.h>
   4          #include <reg52.h>
   5          #define NOP nop ( ); nop ( ); nop ( ); nop ( )
   6          #define SDA P1^7
   7          #define SCL P1^6
   8          #define uchar   unsigned        char
   9          
  10          void sta( );
  11          void cack( );
  12          void stop( );
  13          void mnack( );
  14          void mack( );
  15          void wrbyt(uchar shu);
  16          void wrnbyta(uchar slaw,uchar gg[],uchar n);
  17          void wrnbyt(uchar slaw,uchar ff[],uchar number);
  18          uchar rdbyt( );
  19          void rdnbyt(uchar slar,uchar qq[],uchar number);
  20          //源程序由9个函数组成,程序清单如下:
  21          voidsta( )/*启动I2C总线*/
  22          {
  23   1      SDA=1;
*** ERROR C141 IN LINE 23 OF I2C.C: syntax error near '='
  24   1      SCL=1;
*** ERROR C141 IN LINE 24 OF I2C.C: syntax error near '='
  25   1      NOP;
  26   1      SDA=0;
  27   1      NOP;
  28   1      SCL=0;
  29   1      }
  30          
  31          void stop( )/*停止I2C总线
  32          */
  33          {
  34   1      SDA=0;
  35   1      SCL=1;
  36   1      NOP;
  37   1      SDA=1;
  38   1      NOP;
  39   1      SCL=0;
  40   1      }
  41          
  42          void mack( )/*发送应答位*/
  43          {
  44   1      SDA=0;
  45   1      SCL=1;
  46   1      NOP;
  47   1      SCL=0;
  48   1      SDA=1;
  49   1      }
  50          
  51          void mnack( )/*发送非应答位*/
  52          {
  53   1      SDA=1;
C51 COMPILER V7.07   I2C                                                                   11/08/2007 09:01:05 PAGE 2   

  54   1      SCL=1;
  55   1      NOP;
  56   1      SCL=0;
  57   1      SDA=0;
  58   1      }
  59          
  60          void cack( )/*应答位检查*/
  61          {
  62   1      SDA=1;
  63   1      SCL=1;
  64   1      F0=0;
  65   1      if(SDA==1)
  66   1      F0=1;
  67   1      SCL=0;
  68   1      nop( );
  69   1      }
  70          /*向虚拟I2C总线上发送1个数据字节*/
  71          void wrbyt(uchar shu)
  72          {
  73   1      uchar i;
  74   1      for(i=0;i<8;i++){
  75   2      if((shu&0x80)>0){
  76   3      SDA=1;
  77   3      SCL=1;
  78   3      NOP;
  79   3      SCL=0;
  80   3      SDA=0;
  81   3      }
  82   2      else{
  83   3      SDA=0;
  84   3      SCL=1;
  85   3      NOP;
  86   3      SCL=0;
  87   3      }
  88   2      shu=shu<<1;
  89   2      }
  90   1      }
  91          /*从I2C总线上读取1个数据字节*/
  92          uchar rdbyt( )
  93          {
  94   1      uchar nn=0xff,mm=0x80,uu=0x7f;
  95   1      uchar j;
  96   1      for(j=0;j<8;j++){
  97   2      SDA=1;
  98   2      SCL=1;
  99   2      if(SDA==0)
 100   2      nn=(nn&uu);
 101   2      else
 102   2      nn=(nn|mm);。
 103   2      nn=crol(nn,1);
 104   2      SCL=0;
 105   2      }
 106   1      return(nn);
 107   1      }
 108          
 109          void wrnbyta(uchar slaw,uchar gg[],uchar n)
 110          {
 111   1      do{
 112   2      sta( );
 113   2      wrbyt(slaw);
 114   2      cack( );
 115   2      }while(F0==1);
C51 COMPILER V7.07   I2C                                                                   11/08/2007 09:01:05 PAGE 3   

 116   1      wrbyt(gg[n]);
 117   1      cack( );
 118   1      }
 119          /*向虚拟I2C总线上发送n个字节的数据*/
 120          void wrnbyt(uchar slaw,uchar ff[],uchar number)
 121          {
 122   1      uchar idata k;
 123   1      do{
 124   2      sta( );
 125   2      wrbyt(slaw);
 126   2      ?cack( );
 127   2      }while(F0==1);
 128   1      for(k=0;k<number;k++){。
 129   2      wrbyt(ff[k]);
 130   2      cack( );
 131   2      while(F0==1)
 132   2      wrnbyta(slaw,ff,k);
 133   2      }
 134   1      stop( );
 135   1      }
 136          /*从虚拟I2C总线上读取n个字节的数据*/
 137          void rdnbyt(uchar slar,uchar qq[],uchar number)
 138          {
 139   1      uchar idata data0,l;
 140   1      do{
 141   2      sta( );
 142   2      wrbyt(slar);
 143   2      cack( );
 144   2      }while(F0==1);?
 145   1      for(l=0;l<number-1;l++){
 146   2      data0=rdbyt( );
 147   2      qq[l]=data0;
 148   2      mack( );
 149   2      }
 150   1      data0=rdbyt( );
 151   1      qq[l]=data0;
 152   1      mnack( );
 153   1      stop( );
 154   1      }

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

⌨️ 快捷键说明

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