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

📄 eeprom.lst

📁 STC51系列的源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   EEPROM                                                                09/26/2008 11:40:17 PAGE 1   


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

line level    source

   1          /********************************************************************************/
   2          /* filename : EEPROM.c                                                          */
   3          /* created  : xillinx                                                           */
   4          /* descript : 处理EEPROM相关的函数                                              */
   5          /********************************************************************************/
   6          #include "../CPU/CPU.h"
   7          #include "../EEPROM/EEPROM.h"
   8          
   9          /********************************************************************************/
  10          /* funname : IIC_delay()                                                        */
  11          /* created : xillinx                                                            */
  12          /* time    : 2008-08-06                                                         */
  13          /* descript: 简单的时间延时                                                     */
  14          /********************************************************************************/
  15          void IIC_delay_max(void)
  16          {   _nop_();
  17   1          _nop_();
  18   1          _nop_();
  19   1          _nop_();
  20   1          _nop_();
  21   1          _nop_();
  22   1          _nop_();
  23   1          _nop_();
  24   1          _nop_();
  25   1          _nop_();
  26   1          _nop_();
  27   1          _nop_();
  28   1          _nop_();
  29   1          _nop_();
  30   1          _nop_();
  31   1          _nop_();
  32   1          _nop_();
  33   1          _nop_();
  34   1          _nop_();
  35   1          _nop_();
  36   1          _nop_();
  37   1          _nop_();
  38   1          _nop_();
  39   1          _nop_();
  40   1      }
  41          void IIC_delay_min(void)
  42          {   _nop_();
  43   1          _nop_();
  44   1          _nop_();
  45   1          _nop_();
  46   1          _nop_();
  47   1          _nop_();
  48   1          _nop_();
  49   1          _nop_();
  50   1          _nop_();
  51   1          _nop_();
  52   1          _nop_();
  53   1          _nop_();
  54   1          _nop_();
C51 COMPILER V8.02   EEPROM                                                                09/26/2008 11:40:17 PAGE 2   

  55   1          _nop_();
  56   1          _nop_();
  57   1          _nop_();
  58   1          _nop_();
  59   1          _nop_();
  60   1      }
  61          
  62          void IIC_delay_ms(unsigned int time)
  63          {   unsigned int i,j;
  64   1          for(i=time;i>0;i--)
  65   1          {   for(j=0;j<0x1000;j++)
  66   2              {   ;
  67   3              }
  68   2          }
  69   1      }
  70          
  71          /********************************************************************************/
  72          /* funname : I2C_initialize()                                                   */
  73          /* created : xillinx                                                            */
  74          /* time    : 2008-08-06                                                         */
  75          /* descript: 时钟信号和数据信号都释放变成高电平,注意先释放时钟,后释放数据更好   */
  76          /********************************************************************************/
  77          void I2C_initialize(void)
  78          {   I2C_SCLK_PIN=0x0;
  79   1          IIC_delay_min();
  80   1          I2C_DATA_PIN=0x1;
  81   1          IIC_delay_min();
  82   1          I2C_SCLK_PIN=0x1;
  83   1          IIC_delay_min();
  84   1      }
  85          
  86          /********************************************************************************/
  87          /* funname : I2C_start()                                                        */
  88          /* created : xillinx                                                            */
  89          /* time    : 2008-08-06                                                         */
  90          /* descript: 必须从空闲状态下,保持时钟信号为高电平,拉低数据信号                 */
  91          /********************************************************************************/
  92          void I2C_start(void)
  93          {   I2C_DATA_PIN=0x0;  //* 启动信号
  94   1          IIC_delay_min();
  95   1          I2C_SCLK_PIN=0x0;  //* 准备发送数据
  96   1          IIC_delay_min();
  97   1      }
  98          
  99          /********************************************************************************/
 100          /* funname : I2C_stop()                                                         */
 101          /* created : xillinx                                                            */
 102          /* time    : 2008-08-06                                                         */
 103          /* descript: 保持时钟信号为高电平,释放数据信号为高电平                          */
 104          /********************************************************************************/
 105          void I2C_stop(void)
 106          {   I2C_SCLK_PIN=0x1;
 107   1          IIC_delay_min();
 108   1          I2C_DATA_PIN=0x1;
 109   1          IIC_delay_min();
 110   1      }
 111          
 112          /********************************************************************************/
 113          /* funname : I2C_go_hi()                                                        */
 114          /* created : xillinx                                                            */
 115          /* time    : 2008-08-06                                                         */
 116          /* descript: 在时钟为低时把数据置为高,然后把时钟置为高                          */
C51 COMPILER V8.02   EEPROM                                                                09/26/2008 11:40:17 PAGE 3   

 117          /********************************************************************************/
 118          void I2C_go_hi(void)
 119          {   I2C_DATA_PIN=0x1;
 120   1          IIC_delay_min();
 121   1          I2C_SCLK_PIN=0x1;
 122   1          IIC_delay_min();
 123   1      }
 124          
 125          /********************************************************************************/
 126          /* funname : I2C_send_bit()                                                     */
 127          /* created : xillinx                                                            */
 128          /* time    : 2008-08-06                                                         */
 129          /* descript: 发送一位数据给IIC器件                                              */
 130          /********************************************************************************/
 131          void I2C_send_bit(unsigned char mbit)
 132          {   I2C_DATA_PIN=mbit;
 133   1          IIC_delay_min();
 134   1          I2C_SCLK_PIN=0x1;
 135   1          IIC_delay_max();
 136   1          I2C_SCLK_PIN=0x0;
 137   1          IIC_delay_min();
 138   1      }
 139          
 140          /********************************************************************************/
 141          /* funname : I2C_send_8_bits()                                                  */
 142          /* created : xillinx                                                            */
 143          /* time    : 2008-08-06                                                         */
 144          /* descript: 发送一位数据给IIC器件,结束之后,数据线由mdata的最后一位决定,时钟    */
 145          /*           线输出低电平                                                       */
 146          /********************************************************************************/
 147          void I2C_send_8_bits(unsigned char mdata)
 148          {   unsigned char i;
 149   1          for(i=0x0;i<0x8;i++)
 150   1          {   if(mdata&0x80)
 151   2              {  I2C_send_bit(0x1);
 152   3              }
 153   2              else
 154   2              {  I2C_send_bit(0x0);
 155   3              }
 156   2              mdata<<=0x1;
 157   2          }
 158   1          I2C_DATA_PIN=0x0;
 159   1          IIC_delay_min();
 160   1      }
 161          
 162          /********************************************************************************/
 163          /* funname : I2C_read_ack()                                                     */
 164          /* created : xillinx                                                            */
 165          /* time    : 2008-08-06                                                         */
 166          /* descript: I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之  */
 167          /* 后,在时钟的第9个脉冲期间释放数据总线, 由接收器发送一个ACK(把数据总线的电平   */
 168          /* 拉低)来表示数据成功接收。                                                    */
 169          /********************************************************************************/

⌨️ 快捷键说明

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