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

📄 eeprom.lst

📁 主要介绍了24c16的读写,mcu为89s52,lcd为TC2002A,完成功能是把数据写入24c16中,再把数据从24c16读出,并显示在lcd中.编辑环境为keil2,已通过测试.
💻 LST
字号:
C51 COMPILER V7.09   EEPROM                                                                07/26/2006 15:18:12 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>
   2          #include<intrins.h>
   3          #include"main.h"
   4          #include"port.h"
   5          #include"delay.h"
   6          #include "eeprom.h"
   7          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
   8          
   9          //#include"eeprom.h"
  10          #define NUM 10
  11          uChar idata sendbuf[NUM];
  12          uChar idata receivebuf[NUM];
  13          //bit bdata SystemError;
  14          bit SystemError;
  15          void iic_start(void)
  16          {
  17   1              EA=0;
  18   1              SDA=1;
  19   1              SCL=1;
  20   1              delayNOP();
  21   1              SDA=0;
  22   1              delayNOP();
  23   1              SCL=0;
  24   1      }
  25          void iic_stop(void)
  26          {
  27   1              SDA=0;
  28   1              SCL=1;
  29   1              delayNOP();
  30   1              SDA=1;
  31   1              delayNOP();
  32   1              SCL=0;
  33   1      }
  34          
  35          void slave_ACK(void)
  36          {
  37   1              SDA=0;
  38   1              SCL=1;
  39   1              delayNOP();
  40   1              SDA=1;
  41   1              SCL=0;
  42   1      }
  43          
  44          void slave_NOACK(void)
  45          {
  46   1              SDA=1;
  47   1              SCL=1;
  48   1              delayNOP();
  49   1              SDA=0;
  50   1              SCL=0;
  51   1      }
  52          
  53          void check_ACK(void)
  54          {
  55   1              SDA=1;
C51 COMPILER V7.09   EEPROM                                                                07/26/2006 15:18:12 PAGE 2   

  56   1              SCL=1;
  57   1              F0=0;
  58   1              if(SDA==1)
  59   1                      F0=1;
  60   1              SCL=0;
  61   1      }
  62          
  63          void IICSendByte(uChar ch)
  64          {
  65   1              uChar idata n=8;
  66   1              while(n--)
  67   1              {
  68   2                      if((ch&0x80)==0x80)
  69   2                              {
  70   3                                      SDA=1;
  71   3                                      SCL=1;
  72   3                                      delayNOP();
  73   3                                      SDA=0;
  74   3                                      SCL=0;
  75   3                               }
  76   2                      else
  77   2                              {
  78   3                                      SDA=0;
  79   3                                      SCL=1;
  80   3                                      delayNOP();
  81   3                                      SCL=0;
  82   3                               }
  83   2                               ch=ch<<1;
  84   2               }
  85   1      }
  86          uChar IICreceiveByte(void)
  87          {
  88   1              uChar idata n=8;
  89   1              uChar tdata;
  90   1              while(n--)
  91   1              {
  92   2                      SDA=1;
  93   2                      SCL=1;
  94   2                      tdata=tdata<<1;
  95   2                      if(SDA==1)
  96   2                              tdata=tdata|0x01;
  97   2                      else
  98   2                              tdata=tdata&0xfe;
  99   2                       SCL=0;
 100   2               }
 101   1               return(tdata);
 102   1      }
 103          
 104          void writeNByte(uChar slave_add,uChar n)
 105          {
 106   1              uChar idata send_da,i=0;
 107   1              iic_start();
 108   1              IICSendByte(slave_add);
 109   1              check_ACK();
 110   1              if(F0==1)
 111   1              {
 112   2                      SystemError=1;
 113   2                      return;
 114   2              }
 115   1              while(n--)
 116   1              {
 117   2                      send_da=sendbuf[i++];
C51 COMPILER V7.09   EEPROM                                                                07/26/2006 15:18:12 PAGE 3   

 118   2                      IICSendByte(send_da);
 119   2                      check_ACK();
 120   2                      if(F0==1)
 121   2                              {
 122   3                              SystemError=1;
 123   3                              return;
 124   3                              }
 125   2              }
 126   1              iic_stop();
 127   1      }
 128          
 129          void receiveNByte(uChar idata slave_add,uChar n)
 130          {
 131   1              uChar idata receive_da,i=0;
 132   1              iic_start();
 133   1              IICSendByte(slave_add);
 134   1              check_ACK();
 135   1              if(F0==1)
 136   1              {
 137   2                      SystemError=1;
 138   2                      return;
 139   2              }
 140   1              while(n--)
 141   1              {
 142   2                      receive_da=IICreceiveByte();
 143   2                      receivebuf[i++]=receive_da;
 144   2                      slave_ACK();
 145   2              }
 146   1              slave_NOACK();
 147   1              iic_stop();
 148   1      }
 149          /*
 150          void writeByte2dev(unsigned char address_H,unsigned char address_L,unsigned char wr_data)
 151          {
 152                  iic_start();
 153                  IICSendByte(0x00);//设备地址
 154                  check_ACK();//检查应答位,
 155                  if(F0==1)
 156                  {
 157                          SystemError=1;//若非应答表明器件错误或已坏,置错误标志位SystemError
 158                          return;
 159                   }
 160                   IICSendByte(0x01);
 161                   check_ACK();
 162                   if(F0==1)
 163                   {
 164                   SystemError=1;
 165                          return;
 166                   }
 167                   IICSendByte(0x0a);//片内低8bit地址
 168                    check_ACK();//检查应答位,
 169                    if(F0==1)
 170                   {
 171                   SystemError=1;
 172                          return;
 173                   }
 174                   IICSendByte(0xff);
 175                    check_ACK();
 176                    if(F0==1)
 177                   {
 178                   SystemError=1;
 179                          return;
C51 COMPILER V7.09   EEPROM                                                                07/26/2006 15:18:12 PAGE 4   

 180                   }
 181                   iic_stop();//全部发完则停止,
 182          
 183          }
 184          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    261    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =     20       6
   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 + -