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

📄 24lc256.lst

📁 这是一个产品的开发项目(基本程序)。有按键计算
💻 LST
字号:
C51 COMPILER V7.50   24LC256                                                               01/03/2009 21:23:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 24LC256
OBJECT MODULE PLACED IN 24LC256.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SRC\24LC256.C BROWSE DEBUG OBJECTEXTEND PRINT(.\24LC256.lst) OBJECT(24LC256
                    -.obj)

line level    source

   1          
   2          
   3          #include "p89v51rx2.h"
   4          #include <intrins.h>
   5          
   6          #define OP_READ 0xa1            // 器件地址以及读取操作
   7          #define OP_WRITE 0xa0           // 器件地址以及写入操作
   8          #define MAX_ADDR 0x7fff         // AT24C256最大地址
   9          
  10          sbit SDA = P3^4;
  11          sbit SCL = P3^5;
  12          
  13          bit bdata ack;
  14          #define nops(); {_nop_();_nop_();_nop_();_nop_();}
  15          
  16          //------------------------------------------------------------------------------------------------------
  17          void IIC_start(void);           //起始条件
  18          void IIC_stop(void);            //停止条件
  19          void IIC_ack_main(bit ack_main);
  20          void IIC_sendbyte(unsigned char senddata);
  21          unsigned char IIC_readbyte(void);
  22          //unsigned char IIC_read_cur_addr(unsigned char ad_main);
  23          void IIC_RdFromROM(unsigned char ad_main,unsigned char *rddata,unsigned char addh,unsigned char addl,unsig
             -ned char num);
  24          void IIC_WrToROM(unsigned char ad_main,unsigned char *wrdata,unsigned char addh,unsigned char addl,unsigne
             -d char num);
  25          extern void delayms(unsigned char ms);
  26          
  27          //=====================================24LC256================================
  28          
  29          /*****************************************************************************
  30          ****
  31          ****
  32          ****
  33          ****
  34          ****
  35          ******************************************************************************/
  36          void IIC_start(void)
  37          {
  38   1      //      SCL=0;
  39   1              SDA=1;
  40   1              _nop_();
  41   1              SCL=1;
  42   1              //_nop_();_nop_();_nop_();_nop_();_nop_();
  43   1              nops();
  44   1              SDA=0;
  45   1              //_nop_();_nop_();_nop_();_nop_();_nop_();
  46   1              nops();
  47   1              SCL=0;
  48   1              _nop_();
  49   1              _nop_();
  50   1      }
  51          
  52          
C51 COMPILER V7.50   24LC256                                                               01/03/2009 21:23:33 PAGE 2   

  53          /*****************************************************************************
  54          ****
  55          ****
  56          ****
  57          ****
  58          ****
  59          ******************************************************************************/
  60          void IIC_stop(void)
  61          {
  62   1      //      SCL=0;
  63   1              SDA=0;
  64   1              _nop_();
  65   1              SCL=1;
  66   1      //      _nop_();_nop_();_nop_();_nop_();_nop_();
  67   1              nops();
  68   1              nops();
  69   1              SDA=1;
  70   1      //      _nop_();_nop_();_nop_();_nop_();_nop_();
  71   1              nops();
  72   1              nops();
  73   1      
  74   1      }
  75          
  76          /*****************************************************************************
  77          ****
  78          ****
  79          ****
  80          ****
  81          ****
  82          ******************************************************************************/
  83          void IIC_ack_main(bit ack_main)//1  应答信号 0 非应答信号
  84          {
  85   1          if(ack_main)
  86   1              SDA=0; //主器件为接收方,从器件为发送方,应答信号
  87   1          else
  88   1              SDA=1; //主器件为接收方,从器件为发送方,非应答信号
  89   1      //    _nop_();_nop_();_nop_();_nop_();_nop_();
  90   1              nops();
  91   1          SCL=1;
  92   1      //    _nop_();_nop_();_nop_();_nop_();_nop_();
  93   1          nops();
  94   1          SCL=0;
  95   1      }
  96          
  97          /*****************************************************************************
  98          ****
  99          ****
 100          ****
 101          ****
 102          ****
 103          ******************************************************************************/
 104          void IIC_sendbyte(unsigned char senddata)
 105          {
 106   1                                                                
 107   1              unsigned char idata count=8;    //bit count control
 108   1              unsigned char temp;
 109   1              do
 110   1              {
 111   2                      
 112   2                      temp=senddata;
 113   2                      SCL=0;
 114   2                      nops();
C51 COMPILER V7.50   24LC256                                                               01/03/2009 21:23:33 PAGE 3   

 115   2                      if((temp&0x80)==0x80)
 116   2                      {
 117   3                              SDA=1;
 118   3                      }
 119   2                      else
 120   2                      {
 121   3                              SDA=0;
 122   3                      }
 123   2                      SCL=1;
 124   2                      senddata=senddata<<1;
 125   2                      count--;
 126   2              }while(count);
 127   1              SCL=0;  //不考虑从应答位|但要控制好时序        */     
 128   1      }
 129          
 130          /*****************************************************************************
 131          ****
 132          ****
 133          ****
 134          ****
 135          ****
 136          ******************************************************************************/
 137          unsigned char IIC_readbyte(void)
 138          {
 139   1              unsigned char idata count,temp,temp1;
 140   1              temp=0;
 141   1              temp1=0;
 142   1              count=8;
 143   1              SDA=1;
 144   1              do
 145   1              {
 146   2                 _nop_();
 147   2                 SCL=0;
 148   2                 nops();
 149   2                 SCL=1;
 150   2                 nops();
 151   2                 if(SDA)
 152   2                 {
 153   3                     temp=temp|0x01;
 154   3                 }
 155   2                 else
 156   2                 {
 157   3                     temp=temp&0xfe;
 158   3                 }
 159   2                 if(count-1)
 160   2                 {
 161   3                     temp1=temp<<1;
 162   3                     temp=temp1;
 163   3                 }  
 164   2                 count--;
 165   2              }while(count);
 166   1              SCL=0;
 167   1              _nop_();
 168   1              _nop_();
 169   1              return temp;
 170   1      }
 171          
 172          void IIC_WrToROM(unsigned char ad_main,unsigned char *wrdata,unsigned char addh,unsigned char addl,unsigne
             -d char num)
 173          {
 174   1              unsigned char idata i;
 175   1              IIC_start();
C51 COMPILER V7.50   24LC256                                                               01/03/2009 21:23:33 PAGE 4   

 176   1              IIC_sendbyte(ad_main);
 177   1              IIC_ack_main(1);
 178   1              IIC_sendbyte(addh);
 179   1              IIC_ack_main(1);
 180   1              IIC_sendbyte(addl);
 181   1              IIC_ack_main(1);  
 182   1              for(i=0;i<num;i++)
 183   1              {
 184   2            
 185   2                  IIC_sendbyte(*(wrdata+i));
 186   2                  IIC_ack_main(1);
 187   2      
 188   2              }
 189   1              IIC_stop();
 190   1              delayms(20);
 191   1      }
 192          
 193          void IIC_RdFromROM(unsigned char ad_main,unsigned char *rddata,unsigned char addh,unsigned char addl,unsig
             -ned char num)
 194          {
 195   1              unsigned char i;                                // ,j
 196   1              i=0;      
 197   1              IIC_start();
 198   1              IIC_sendbyte(ad_main);
 199   1              IIC_ack_main(1);
 200   1              IIC_sendbyte(addh);
 201   1              IIC_ack_main(1);
 202   1              IIC_sendbyte(addl);
 203   1              IIC_ack_main(1);
 204   1              IIC_start();
 205   1              IIC_sendbyte(ad_main+1);
 206   1              IIC_ack_main(1);
 207   1              for(i=0;i<num-1;i++)
 208   1              {
 209   2                      *(rddata+i)=IIC_readbyte();
 210   2                      IIC_ack_main(1);
 211   2               } 
 212   1              *(rddata+num-1)=IIC_readbyte();  
 213   1              IIC_ack_main(0);
 214   1              IIC_stop();  
 215   1      }
 216          /*void delayms(unsigned char ms)
 217          // 延时子程序
 218          {
 219                  unsigned char i;
 220                  while(ms--)
 221                  {
 222                          for(i = 0; i < 125; i++);
 223                  }
 224          }
 225          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    379    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   IDATA SIZE       =   ----       5
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.

C51 COMPILER V7.50   24LC256                                                               01/03/2009 21:23:33 PAGE 5   


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

⌨️ 快捷键说明

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