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

📄 24c02.lst

📁 一款可以用于毕业设计
💻 LST
字号:
C51 COMPILER V7.50   24C02                                                                 07/22/2007 16:13:48 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 24C02
OBJECT MODULE PLACED IN 24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c02.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"REG51F.h"
   2          #include"intrins.h"
   3          #include"USEH1.h"
   4          #include"24c02.h"
   5          
   6          //读写控制命令
   7          //const uchar WR24C02   =   0xA0;       //EEPROM地址+写命令
   8          //const uchar RD24C02   =   0xA1;       //EEPROM地址+读命令
   9          #define WR24C02         0xA0
  10          #define RD24C02         0xA1
  11          //用户变量声明
  12          bit ErrorBit;                             //读写错误标志       1错误     0   正确
  13          uchar ErrorCode;                          //错误码
  14          
  15          void Start(void);
  16          void Stop(void);
  17          void Ack(void);
  18          void NoAck(void);
  19          void TestAck(void);
  20          void WriteI2c(uchar date);
  21          uchar ReadI2c(void);
  22          //void DelayMs(uchar time);
  23          
  24          
  25          /***************************************
  26          *函数名称:       void   Start(void)
  27          *功能描述:       读写开始
  28          *输入:               无
  29          *输出:               无
  30          *全局变量:       I2C_SCL,I2C_SDA
  31          *调用模块:       无
  32          
  33          ****************************************/
  34          void Start(void)
  35          {
  36   1         I2C_SDA = 1;           //起始条件的数据信号
  37   1         _nop_();
  38   1         I2C_SCL = 1;           //起始条件时钟信号
  39   1         _nop_();                   //信号建立时间>4.7us
  40   1         _nop_();
  41   1         _nop_();
  42   1         _nop_();
  43   1         _nop_();
  44   1         I2C_SDA = 0;           //起始信号
  45   1         _nop_();
  46   1         _nop_();
  47   1         _nop_();
  48   1         _nop_();
  49   1         _nop_();
  50   1         I2C_SCL = 0;           //钳住I2C总线,   准备发送或者接受数据
  51   1         _nop_();
  52   1         _nop_();
  53   1      }
  54          /***************************************
  55          *函数名称:       void   Stop(void)
C51 COMPILER V7.50   24C02                                                                 07/22/2007 16:13:48 PAGE 2   

  56          *功能描述:       读写结束
  57          *输入:               无
  58          *输出:               无
  59          *全局变量:       I2C_SCL,I2C_SDA
  60          *调用模块:       无
  61          
  62          ****************************************/
  63          void Stop(void)
  64          {
  65   1         I2C_SDA = 0;             //结束条件的数据信号
  66   1         _nop_();
  67   1         I2C_SCL = 1;             //结束条件的时钟信号
  68   1         _nop_();
  69   1         _nop_();
  70   1         _nop_();
  71   1         _nop_();
  72   1         _nop_();
  73   1         I2C_SDA = 1;             //结束信号
  74   1         _nop_();
  75   1         _nop_();
  76   1         _nop_();
  77   1         _nop_();
  78   1      }
  79          /***************************************
  80          *函数名称:       void   Ack(void)
  81          *功能描述:       正确应答,读一个字节后必须应答
  82          *输入:               无
  83          *输出:               无
  84          *全局变量:       I2C_SCL,I2C_SDA
  85          *调用模块:       无
  86          
  87          ****************************************/
  88          void Ack(void)
  89          {
  90   1         I2C_SDA = 0;
  91   1         _nop_();
  92   1         _nop_();
  93   1         I2C_SCL = 1;
  94   1         _nop_();
  95   1         _nop_();
  96   1         _nop_();
  97   1         //_nop_();
  98   1         //_nop_();
  99   1         I2C_SCL = 0;
 100   1         _nop_();
 101   1         _nop_();
 102   1         I2C_SDA = 1;
 103   1         _nop_();
 104   1         _nop_();
 105   1      }
 106          /***************************************
 107          *函数名称:       void   NoAck(void)
 108          *功能描述:       无应答
 109          *输入:               无
 110          *输出:               无
 111          *全局变量:       I2C_SCL,I2C_SDA
 112          *调用模块:       无
 113          
 114          ****************************************/
 115          void NoAck(void)
 116          {
 117   1         I2C_SDA = 1;
C51 COMPILER V7.50   24C02                                                                 07/22/2007 16:13:48 PAGE 3   

 118   1         _nop_();
 119   1         _nop_();
 120   1         I2C_SCL = 1;
 121   1         _nop_();
 122   1         _nop_();
 123   1         _nop_();
 124   1         _nop_();
 125   1         _nop_();
 126   1         I2C_SCL = 0;
 127   1         _nop_();
 128   1         _nop_();
 129   1      }
 130          /***************************************
 131          *函数名称:       void   TestAck(void)
 132          *功能描述:       读写错误测试,写一个字节应该测试应答信号
 133          *输入:               无
 134          *输出:               返回一个位
 135          *全局变量:       I2C_SCL,I2C_SDA
 136          *调用模块:       无
 137          
 138          ****************************************/
 139          void TestAck(void)
 140          {
 141   1         I2C_SDA = 1;
 142   1         _nop_();
 143   1         _nop_();
 144   1         I2C_SCL = 1;
 145   1         _nop_();
 146   1         _nop_();
 147   1         _nop_();
 148   1         ErrorBit = I2C_SDA;
 149   1         I2C_SCL = 0;
 150   1         _nop_();
 151   1         _nop_();
 152   1      }
 153          /***************************************
 154          *函数名称:       void   WriteI2c(uchar   date)
 155          *功能描述:       写I2C
 156          *输入:               待送数据,高字节先送
 157          *输出:               无
 158          *全局变量:       I2C_SCL,I2C_SDA
 159          *调用模块:       无
 160          
 161          ****************************************/
 162          void WriteI2c(uchar date)
 163          {
 164   1         uchar i;
 165   1         for(i=0; i<8; i++)
 166   1         {
 167   2            I2C_SDA = date & 0x80;                 //送数据到数据线上
 168   2            date <<= 1;
 169   2            _nop_();
 170   2            I2C_SCL = 1;                                     //置时钟信号为高电平,使数据有效
 171   2            _nop_();
 172   2            _nop_();
 173   2            _nop_();
 174   2            _nop_();
 175   2            _nop_();
 176   2            I2C_SCL = 0;
 177   2            _nop_();
 178   2            _nop_();
 179   2         }
C51 COMPILER V7.50   24C02                                                                 07/22/2007 16:13:48 PAGE 4   

 180   1      }
 181          /***************************************
 182          *函数名称:       uchar   ReadI2c(void)
 183          *功能描述:       读I2C
 184          *输入:               无
 185          *输出:               返回一个字节的数据,高字节在前
 186          *全局变量:       I2C_SCL,I2C_SDA
 187          *调用模块:       无
 188          
 189          ****************************************/
 190          uchar ReadI2c(void)
 191          {
 192   1         uchar i;
 193   1         uchar byte = 0;
 194   1         for(i=0; i<8; i++)
 195   1         {
 196   2            I2C_SCL = 0;                       //置时钟为低电平,准备接受数据
 197   2            _nop_();
 198   2            _nop_();
 199   2            _nop_();
 200   2            _nop_();
 201   2            _nop_();
 202   2            I2C_SCL = 1;                     //置时钟为高电平,使数据线数据有效
 203   2            _nop_();
 204   2            _nop_();
 205   2            byte <<= 1;
 206   2            byte |= I2C_SDA;
 207   2            _nop_();
 208   2            _nop_();
 209   2            I2C_SCL = 0;
 210   2         }
 211   1         return(byte);
 212   1      }
 213          /***************************************
 214          *函数名称:       void   DelayMs(uchar   time)
 215          *功能描述:       延时
 216          *输入:               延时时间
 217          *输出:               无
 218          *全局变量:       无
 219          *调用模块:       无
 220          
 221          ****************************************/
 222          /*void DelayMs(uchar time)
 223          {
 224             uchar i;
 225             do
 226             {
 227                for(i=0; i<125; i++);       //*延时   8us   x   125   =   1ms
 228             }
 229             while(time--);
 230          }*/
 231          /***************************************
 232          *函数名称:       void     WriteDate(uchar   StartAddress,uchar   *date,uchar   bytes)
 233          *功能描述:       写数据
 234          *输入:               数据开始地址,保存数据指针,数据字节数
 235          *输出:               无
 236          *全局变量:       无
 237          *调用模块:       Start(),WriteI2c(),Stop(),TestAck()
 238          *注意事项:       调用之前,需要定义一个数组,用来存待发送的数据
 239          ****************************************/
 240          void WriteDate(uchar StartAddress,  uchar *date,  uchar bytes)
 241          {
C51 COMPILER V7.50   24C02                                                                 07/22/2007 16:13:48 PAGE 5   

 242   1         uchar i = 0;
 243   1         Start();
 244   1         WriteI2c(WR24C02);
 245   1         TestAck();
 246   1         WriteI2c(StartAddress);
 247   1         TestAck();
 248   1         for(i=0; i<bytes; i++)
 249   1         {
 250   2            WriteI2c(*date);
 251   2            TestAck();
 252   2            date++;
 253   2         }
 254   1         Stop();
 255   1         //DelayMs(20);
 256   1      }
 257          /***************************************
 258          *函数名称:       void     ReadDate(uchar   StartAddress,uchar   *date,uchar   bytes)
 259          *功能描述:       读数据
 260          *输入:               数据开始地址,读取数据指针,数据字节数
 261          *输出:               无
 262          *全局变量:       无
 263          *调用模块:       Start(),WriteI2c(),ReadI2c(),Ack(),NoAck(),Stop(),TestAck()
 264          *注意事项:       调用之前,需要定义一个数组,用来存读取的数据
 265          ****************************************/
 266          void   ReadDate(uchar StartAddress,  uchar *date,  uchar bytes)
 267          {
 268   1         uchar i;
 269   1         Start();
 270   1         WriteI2c(WR24C02);
 271   1         TestAck();
 272   1         WriteI2c(StartAddress);
 273   1         TestAck();
 274   1         Start();
 275   1         WriteI2c(RD24C02);
 276   1         TestAck();
 277   1         for   (i=0; i<bytes; i++)
 278   1         {
 279   2            *date = ReadI2c();
 280   2            Ack();
 281   2            date++;
 282   2         }
 283   1         NoAck();
 284   1         Stop();
 285   1         //DelayMs(10);
 286   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    253    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      10
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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