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

📄 fm24c256.lst

📁 C8051ucos源码
💻 LST
字号:
C51 COMPILER V8.02   FM24C256                                                              01/09/2009 16:21:04 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE FM24C256
OBJECT MODULE PLACED IN FM24C256.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE program\FM24C256.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\FM24C256.lst) OB
                    -JECT(FM24C256.obj)

line level    source

   1          #include "C8051F020.h"
   2          
   3          #define FM24C256ClkDelay        10
   4          #define FM24C256SCL             P1_6
   5          #define FM24C256SDA                     P1_7
   6          
   7          //---------------------------------------------------------------------------------
   8          //IIC总线的开始状态
   9          void FM24C256I2CStart(void)
  10          {
  11   1      unsigned char wait;
  12   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  13   1              FM24C256SDA = 1;
  14   1              FM24C256SCL = 1;
  15   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  16   1              FM24C256SDA = 0;
  17   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  18   1              FM24C256SCL = 0;
  19   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  20   1      }
  21          //----------------------------------------------------------------------------------
  22          //IIC总线的停止状态
  23          void FM24C256I2CStop(void)
  24          {
  25   1      unsigned char wait;
  26   1              FM24C256SCL  = 0;       
  27   1              FM24C256SDA  = 0;
  28   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  29   1              FM24C256SCL  = 1;
  30   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  31   1              FM24C256SDA  = 1;
  32   1      }
  33          //----------------------------------------------------------------------------------
  34          //向从器件写出一个字节 ch,同时判断ack返回
  35          //返回:ack的状态
  36          unsigned char FM24C256I2CByteWr(unsigned char ch)
  37          {
  38   1      unsigned char i,wait;
  39   1              for (i=0; i<8; i++)
  40   1              {
  41   2                      if(ch&0x80) FM24C256SDA=1; else  FM24C256SDA=0;
  42   2                      ch<<=1;
  43   2                      for(wait=0;wait<FM24C256ClkDelay;wait++);  
  44   2                      FM24C256SCL = 1;
  45   2                      for(wait=0;wait<FM24C256ClkDelay;wait++);
  46   2                      FM24C256SCL = 0;
  47   2                      for(wait=0;wait<FM24C256ClkDelay;wait++);
  48   2              }
  49   1              FM24C256SDA=1; 
  50   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  51   1              FM24C256SCL = 1; 
  52   1              if(FM24C256SDA)i=1;else i=0;
  53   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  54   1              FM24C256SCL = 0;
C51 COMPILER V8.02   FM24C256                                                              01/09/2009 16:21:04 PAGE 2   

  55   1              return i;
  56   1      }
  57          //-----------------------------------------------------------------------------------
  58          //从从器件读入一个字节 
  59          //reack:是反给从器件的应答信号
  60          //返回:读入的字节
  61          unsigned char FM24C256I2CByteRd(unsigned char reack)
  62          {
  63   1      unsigned char i,val,wait;
  64   1              FM24C256SDA = 1;
  65   1              for (i=0; i<8; i++)
  66   1              {
  67   2                      for(wait=0;wait<FM24C256ClkDelay;wait++);
  68   2                      FM24C256SCL = 1;
  69   2                      val<<=1;
  70   2                      if(FM24C256SDA) val|=1;
  71   2                      for(wait=0;wait<FM24C256ClkDelay;wait++);
  72   2                      FM24C256SCL = 0;
  73   2              } 
  74   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  75   1              if (reack)FM24C256SDA = 1;else FM24C256SDA = 0;
  76   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  77   1              FM24C256SCL = 1;
  78   1              for(wait=0;wait<FM24C256ClkDelay;wait++);
  79   1              FM24C256SCL = 0;
  80   1      
  81   1      return val;
  82   1      }
  83          //====================================================================================
  84          void FM24C256Write(unsigned int romadr,unsigned char *buf,unsigned int len)
  85          {
  86   1              if(len==0)return;
  87   1              FM24C256I2CStart();
  88   1              FM24C256I2CByteWr(0xa0);
  89   1              FM24C256I2CByteWr((romadr/0x100));
  90   1              FM24C256I2CByteWr((romadr%0x100));
  91   1              while(len--)
  92   1              {
  93   2                      FM24C256I2CByteWr(*buf++);
  94   2              }
  95   1              FM24C256I2CStop();
  96   1      }
  97          //-----------------------------------------------------------------------------------
  98          void FM24C256Read(unsigned int romadr,unsigned char *buf,unsigned int len)
  99          {
 100   1              if(len==0)return;
 101   1              FM24C256I2CStart();
 102   1              FM24C256I2CByteWr(0xa0);
 103   1              FM24C256I2CByteWr((romadr/0x100));
 104   1              FM24C256I2CByteWr((romadr%0x100));
 105   1              FM24C256I2CStart();
 106   1              FM24C256I2CByteWr(0xa1);
 107   1              while(len--)
 108   1              {
 109   2                      if(len!=0)*buf++ = FM24C256I2CByteRd(0);
 110   2                      else *buf = FM24C256I2CByteRd(1);//读取最后一个字节后ACK的值必须是1
 111   2              }
 112   1              FM24C256I2CStop();
 113   1      }
 114          //-----------------------------------------------------------------------------------
 115          

C51 COMPILER V8.02   FM24C256                                                              01/09/2009 16:21:04 PAGE 3   


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


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

⌨️ 快捷键说明

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