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

📄 24cxx.lst

📁 使用单片机
💻 LST
字号:
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 24CXX
OBJECT MODULE PLACED IN 24CXX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24CXX.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*连续读不好使*/
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          const uchar WRITE = 0xa0;
   7          const uchar READ = 0xa1;
   8          
   9          sbit SCL = P1^6;
  10          sbit SDA = P1^7;
  11          sbit key = P1^2;
  12          /************函数原型*******************/
  13          void Delays(uchar n);
  14          void Start_I2C(void);
  15          void Stop_I2C(void);
  16          bit Ask_I2C(void);
  17          void Write_byte(uchar c_data);
  18          void Write_24CXX(uchar addr,uchar c_data);
  19          void Write_24CXXs(uchar addr,uchar *pr, uchar n);
  20          uchar Read_byte(void);
  21          uchar Read_24CXX(uchar addr);
  22          void ASK(void);
  23          void No_Ask(void);
  24          void Read_24CXXs(uchar addr,uchar *pr, uchar n);
  25          ///////////////////////////////////
  26          void main(void)
  27          {
  28   1        uchar arr[12] = {1,2,3,4,5,6,7,8,9,10,11,12};
  29   1        uchar arr_1[8] = {0};
  30   1        uchar i = 0;
  31   1        //uchar temp;
  32   1       // P2 = Read_24CXX(0x30);
  33   1        //Write_24CXX(0x12,0x80);      
  34   1       /* for(i = 0; i < 8; i++)
  35   1        {
  36   1          Write_24CXXs(0x40+i*8,arr,8);
  37   1          Delays(10);
  38   1         // Write_24CXXs(0x38,&arr[8],4);
  39   1         } */
  40   1      
  41   1         P2 = 0x00;
  42   1       /*for(i = 0; i<20; i++)
  43   1       {
  44   1         P2 = Read_24CXX(0x40 + i);
  45   1         Delays(10);
  46   1        }        */
  47   1      
  48   1       Read_24CXXs(0x10,arr_1,8);
  49   1        while(1);
  50   1      }
  51          ///////////////////////////////////////
  52          /***************延时函数****************/
  53          void Delays(uchar n)
  54          {
  55   1        uchar i, j;
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 2   

  56   1      
  57   1         for(i = n; i > 0; i--)
  58   1         for(j = 112; j > 1; j--)
  59   1            continue;
  60   1      }
  61          /*************启动信号*******************/
  62          void Start_I2C(void)
  63          {
  64   1        SDA = 1;
  65   1        SCL = 1;
  66   1        _nop_();
  67   1        _nop_();
  68   1        _nop_();
  69   1        _nop_();
  70   1        _nop_();
  71   1        _nop_();
  72   1        SDA = 0;
  73   1        _nop_();
  74   1        _nop_();
  75   1        _nop_();
  76   1        _nop_();
  77   1        _nop_();
  78   1        _nop_();
  79   1        SCL = 0;
  80   1      }
  81          /**************结束信号**************************/
  82          void Stop_I2C(void)
  83          {
  84   1        SDA = 0;
  85   1        SCL = 1;
  86   1        _nop_();
  87   1        _nop_();
  88   1        _nop_();
  89   1        _nop_();
  90   1        _nop_();
  91   1        _nop_();
  92   1        SDA = 1;
  93   1        _nop_();
  94   1        _nop_();
  95   1        _nop_();
  96   1        _nop_();
  97   1        _nop_();
  98   1      }
  99          /*********检验应答信号***************************/
 100          bit Ask_I2C(void)
 101          {
 102   1         bit ask;
 103   1        SDA  = 1;
 104   1        _nop_();
 105   1        _nop_();
 106   1        _nop_();
 107   1        _nop_();
 108   1        _nop_();
 109   1        _nop_();
 110   1        SCL = 1;
 111   1        _nop_();
 112   1        _nop_();
 113   1        _nop_();
 114   1        _nop_();
 115   1        _nop_();
 116   1        SCL = 0;
 117   1       return ( ask = !SDA);
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 3   

 118   1      }
 119          /************写一个字节**********************/
 120          void Write_byte(uchar c_data)
 121          {
 122   1              uchar i;
 123   1              for(i = 0; i < 8; i++)
 124   1              { 
 125   2                if(c_data&0x80)
 126   2                 SDA = 1;
 127   2                else SDA = 0;
 128   2                 SCL = 1;
 129   2                _nop_();
 130   2                _nop_();
 131   2            _nop_();
 132   2                _nop_();
 133   2            _nop_();
 134   2                SCL = 0;
 135   2                c_data <<= 1;
 136   2              }
 137   1              Delays(10);
 138   1      }
 139          /***********写应答信号***********************/
 140          void ASK(void)
 141          {
 142   1        SDA = 0;
 143   1        SCL = 1;
 144   1        _nop_();
 145   1        _nop_();
 146   1        _nop_();
 147   1        _nop_();
 148   1        _nop_();
 149   1        _nop_();
 150   1        SDA = 1;
 151   1        SCL = 0;
 152   1      
 153   1      }
 154          /***********写非应答信号********************/
 155          void No_Ask(void)
 156          {
 157   1        SDA = 1;
 158   1        SCL = 1;
 159   1        _nop_();
 160   1        _nop_();
 161   1        _nop_();
 162   1        _nop_();
 163   1        _nop_();
 164   1        _nop_();
 165   1        SCL = 0;
 166   1        SDA =  0;
 167   1      
 168   1      }
 169          /**********读取一个字节***************/
 170          uchar Read_byte(void)
 171          {
 172   1         uchar i = 0;
 173   1         uchar temp;
 174   1      
 175   1              SDA =1;
 176   1         for(i = 0; i < 8; i++)
 177   1         {
 178   2           temp <<= 1;
 179   2           SCL = 1;
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 4   

 180   2               _nop_();
 181   2               _nop_();
 182   2               _nop_();
 183   2               _nop_();
 184   2               _nop_();
 185   2               if(SDA)temp++;
 186   2               _nop_();
 187   2               _nop_();
 188   2               _nop_();
 189   2               _nop_();
 190   2               SCL = 0;
 191   2         }
 192   1         SCL = 0;
 193   1         return temp;
 194   1      }
 195          /***********从片子中读取一个数据************************/
 196          uchar Read_24CXX(uchar addr)
 197          {
 198   1         bit flag = 0;
 199   1         uchar temp ;
 200   1      
 201   1        Start_I2C();
 202   1         while(!flag)              ///写入读控制字
 203   1         {
 204   2              Write_byte(WRITE);
 205   2              flag = Ask_I2C();        //检验应答位
 206   2         }
 207   1         flag = 0;
 208   1         while(!flag)                 
 209   1         {
 210   2              Write_byte(addr);               //写入要读的地址
 211   2              flag = Ask_I2C();
 212   2              }
 213   1               flag = 0;                         //从新开始
 214   1         Start_I2C();
 215   1         while(!flag)              ///写入读控制字
 216   1         {
 217   2              Write_byte(READ);
 218   2              flag = Ask_I2C();        //检验应答位
 219   2         }
 220   1         temp = ~Read_byte();   //读取数据
 221   1         No_Ask();                     //非应答
 222   1         Stop_I2C();
 223   1         return temp;
 224   1      }
 225          /************从片子中读取连续的多个数据********************/
 226          void Read_24CXXs(uchar addr,uchar *pr, uchar n)
 227          {
 228   1         bit flag = 0;
 229   1         uchar temp ;
 230   1      
 231   1         Start_I2C();
 232   1         while(!flag)              ///写入读控制字
 233   1         {
 234   2              Write_byte(WRITE);
 235   2              flag = Ask_I2C();        //检验应答位
 236   2         }
 237   1         flag = 0;
 238   1         while(!flag)                 
 239   1         {
 240   2              Write_byte(addr);               //写入要读的地址
 241   2              flag = Ask_I2C();
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 5   

 242   2              }
 243   1               flag = 0;                         //从新开始
 244   1      
 245   1         Start_I2C();
 246   1         while(!flag)              ///写入读控制字
 247   1         {
 248   2              Write_byte(READ);
 249   2              flag = Ask_I2C();        //检验应答位
 250   2         }
 251   1      
 252   1         while(n--)                    //连续读取
 253   1         {
 254   2           *pr = Read_byte();   //读取数据
 255   2            No_Ask();                  //非应答
 256   2            pr++;
 257   2                Delays(10);
 258   2         }
 259   1         Stop_I2C();
 260   1      }
*** WARNING C280 IN LINE 229 OF 24CXX.C: 'temp': unreferenced local variable
 261          /**********向片子的一个地址写入一个数据*****/
 262          void Write_24CXX(uchar addr,uchar c_data)
 263          {
 264   1        bit flag = 0;
 265   1      
 266   1          Start_I2C();
 267   1         while(!flag)              ///写入控制字
 268   1         {
 269   2              Write_byte(WRITE);
 270   2              flag = Ask_I2C();        //检验应答位
 271   2         }
 272   1         flag = 0;
 273   1         while(!flag)                 
 274   1         {
 275   2              Write_byte(addr);               //写入地址
 276   2              flag = Ask_I2C();
 277   2              }
 278   1              flag = 0;
 279   1              while(!flag)
 280   1              {
 281   2              Write_byte(c_data);        //写入数据
 282   2              flag = Ask_I2C();
 283   2              }
 284   1              Stop_I2C();
 285   1      }
 286          /**********向片子中连续写入8个数据********最多8个****************/
 287          void Write_24CXXs(uchar addr,uchar *pr, uchar n)
 288          {
 289   1          uchar i = 0;
 290   1              uchar m = 0;
 291   1              uchar nm = 0;
 292   1              bit flag = 0;
 293   1      
 294   1              m = n;
 295   1              Start_I2C();
 296   1         while(!flag)              ///写入控制字
 297   1         {
 298   2              Write_byte(WRITE);
 299   2              flag = Ask_I2C();        //检验应答位
 300   2         }
 301   1       /* for(i = 0; i < (m/8) + 1; i++)
 302   1        {
C51 COMPILER V8.02   24CXX                                                                 05/04/2008 16:39:42 PAGE 6   

 303   1          if(n > 8)nm = 8;
 304   1              else nm = n; */
 305   1         flag = 0;
 306   1         while(!flag)                 
 307   1         {
 308   2              Write_byte(addr);               //写入地址
 309   2              flag = Ask_I2C();
 310   2              }
 311   1              while(n--)
 312   1              {
 313   2               flag = 0;
 314   2               while(!flag)
 315   2               {
 316   3                 Write_byte(*pr);        //写入数据
 317   3                 flag = Ask_I2C();
 318   3                 pr++;
 319   3                }
 320   2          }
 321   1         /* addr += i*8;
 322   1               n -= i *8;
 323   1              }       */
 324   1              Stop_I2C();
 325   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    523    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      34
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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