24c04.lst

来自「51写的一个定时时钟」· LST 代码 · 共 125 行

LST
125
字号
C51 COMPILER V7.50   24C04                                                                 03/04/2001 18:19:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #define ucahr  unsigned char 
   4          #define uint   unsigned int
   5          
   6          sbit SDA=P3^7;
   7          sbit SCL=P3^6;
   8          
   9          #define SomeNOP(); { _nop_(); }
  10          
  11          delay32()
  12          {
  13   1      unsigned int i=300;
  14   1      while(i--);
  15   1      }
  16          
  17          /*--------------------------------------------------------------------------------
  18            调用方式:void I2CStart(void) ﹫2001/07/0 4
  19            函数说明:私有函数,I2C专用
  20          ---------------------------------------------------------------------------------*/
  21          void I2CStart(void)
  22          {
  23   1        EA=0;
  24   1        SDA=1; SCL=1; SomeNOP();//INI
  25   1        SDA=0; SomeNOP(); //START
  26   1        SCL=0;
  27   1      }
  28          
  29          /*--------------------------------------------------------------------------------
  30            调用方式:void I2CStop(void) ﹫2001/07/0 4
  31            函数说明:私有函数,I2C专用
  32          ---------------------------------------------------------------------------------*/
  33          void I2CStop(void)
  34          {
  35   1        SCL=0; SDA=0; SomeNOP(); //INI
  36   1        SCL=1; SomeNOP(); SDA=1; //STOP
  37   1        EA=1;
  38   1      }
  39          
  40          /*--------------------------------------------------------------------------------
  41            调用方式:I2CAck(void) ﹫2001/07/0 4
  42            函数说明:私有函数,I2C专用,等待从器件接收方的应答
  43          ---------------------------------------------------------------------------------*/
  44           WaitAck(void)
  45          {
  46   1        bit Errorbit;
  47   1        SDA=1;
  48   1        SCL=1;
  49   1        Errorbit=SDA;
  50   1        SCL=0;
  51   1        return(Errorbit);
  52   1        }
  53          
  54          
  55          /*--------------------------------------------------------------------------------
C51 COMPILER V7.50   24C04                                                                 03/04/2001 18:19:09 PAGE 2   

  56           调用方式:void SendAck(void) ﹫2001/07/0 4
  57           函数说明:私有函数,I2C专用,主器件为接收方,从器件为发送方时,非应答信号。
  58          ---------------------------------------------------------------------------------*/
  59           void SendNotAck(void)
  60           {
  61   1       SDA=1; SomeNOP();
  62   1       SCL=1; SomeNOP();
  63   1       SCL=0;
  64   1       }
  65          
  66          
  67          /*--------------------------------------------------------------------------------
  68           调用方式:void I2CSend(unsigned char ch) ﹫2001/07/0 5
  69           函数说明:私有函数,I2C专用
  70          ---------------------------------------------------------------------------------*/
  71          void I2CSendByte(unsigned char ch)
  72          {
  73   1        unsigned char i=8;
  74   1        while(i--)
  75   1             {
  76   2               SCL=0;_nop_();
  77   2               SDA=(bit)(ch&0x80); ch<<=1; SomeNOP();
  78   2               SCL=1; SomeNOP();
  79   2             }
  80   1        SCL=0;
  81   1      }
  82          
  83          /*--------------------------------------------------------------------------------
  84            调用方式:unsigned char I2CReceive(void) ﹫2001/07/0 5
  85            函数说明:私有函数,I2C专用
  86          ---------------------------------------------------------------------------------*/
  87          unsigned char I2CReceiveByte(void)
  88          {
  89   1        unsigned char i=8;
  90   1        unsigned char dat=0;
  91   1        SDA=1;
  92   1        while(i--)
  93   1             {
  94   2               dat<<=1;
  95   2               SCL=0;SomeNOP();
  96   2               SCL=1;SomeNOP();
  97   2               dat|=SDA;
  98   2             }
  99   1        SCL=0;
 100   1        return(dat);
 101   1      }
 102          //////////////////////////////////////////////////////////////////////////////////////////////////////////
             -///////////////////
 103          
 104          /*-------------------------------------------------------------------------------------*/
 105          /*  向AT24C02的任意地址写入一个字节                                                    */
 106          /*=====================================================================================*/
 107          
 108          void Write_24c04( unsigned char add,unsigned char dat)
 109          {
 110   1       I2CStart();
 111   1       I2CSendByte(0xA0);
 112   1       WaitAck();
 113   1      // I2CSendByte((char)(add>>8));delay32();   //如果使用的芯片是AT24C02、AT24C64、AT24C128、AT24C256的话 那

⌨️ 快捷键说明

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