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

📄 24ceprom.lst

📁 这是液晶的操作源代码,希望对做这个工作的朋友有一定的帮助
💻 LST
字号:
C51 COMPILER V8.02   24CEPROM                                                              01/01/2000 10:42:29 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 24CEPROM
OBJECT MODULE PLACED IN .\24CEPROM.obj
COMPILER INVOKED BY: C:\keil c51\kei c51\C51\BIN\C51.EXE ..\EPROM\24CEPROM.C BROWSE DEBUG OBJECTEXTEND PRINT(.\24CEPROM.
                    -lst) OBJECT(.\24CEPROM.obj)

line level    source

   1          /*******************************************
   2          *       文件名  :       24CEPROM.C
   3          *       功能    :       24C系列EPROM读写程序
   4          *       占用资源:       两个IO口
   5          *       程序员  :       wyl(wyl-e@163.com)
   6          *       日期    :       2007.07
   7          *       包含文件:       24CEPROM.H(见本文件结尾处)
   8          *       说明    :       
   9                    Table :       Description      RomSize
  10                                          EPROM24C01       128
  11                                          EPROM24C02       256
  12                                          EPROM24C04       512
  13                                          EPROM24C08       1024
  14                                          EPROM24C16       2048
  15          ********************************************/
  16          
  17          #include<_REG52_.H>
*** WARNING C318 IN LINE 17 OF ..\EPROM\24CEPROM.C: can't open file '_REG52_.H'
  18          #include"24CEPROM.H"
*** ERROR C202 IN LINE 6 OF ..\EPROM\24CEPROM.H: 'P3': undefined identifier
*** ERROR C202 IN LINE 7 OF ..\EPROM\24CEPROM.H: 'P3': undefined identifier
*** ERROR C129 IN LINE 12 OF ..\EPROM\24CEPROM.H: missing ';' before 'ReadByteFromEPROM'
  19          
  20          /******************************************/
  21          #define SETB_SDA        SDA_EPROM=1;_nop_();_nop_()
  22          #define CLR_SDA         SDA_EPROM=0;_nop_();_nop_()
  23          
  24          #define SETB_SCK        SCK_EPROM=1;_nop_();_nop_()
  25          #define CLR_SCK         SCK_EPROM=0;_nop_();_nop_()     
  26          
  27          #define WAIT_FOR_ACK    _nop_()           //等待时钟周期.
  28          /*******************************************/
  29          
  30                                    
  31          /*******************************************
  32          * 函数功能 : 启动EPROM
  33          * 入口参数 : (void)
  34          * 返回值   : (void)
  35          ********************************************/
  36          void    START_EPROM(void)
  37                  {
  38                          CLR_SCK;                
  39                          SETB_SDA;
  40                          SETB_SCK;
  41                          CLR_SDA;
  42                          CLR_SCK;                
  43                  }
  44          
  45          /*******************************************
  46          * 函数功能 : 停止EPROM
  47          * 入口参数 : (void)
  48          * 返回值   : (void)
  49          ********************************************/
  50          void    STOP_EPROM(void)
C51 COMPILER V8.02   24CEPROM                                                              01/01/2000 10:42:29 PAGE 2   

  51                  {
  52                          CLR_SCK;
  53                          CLR_SDA;
  54                          SETB_SCK;
  55                          SETB_SDA;
  56                          CLR_SCK;        
  57                  }
  58          
  59          /*******************************************
  60          * 函数功能 : 写字节到EPROM
  61          * 入口参数 : (uchar)
  62          * 返回值   : (bit)
  63          ********************************************/
  64          static bit WriteByte_EPROM(uchar        byte_dat)
  65                  {
  66                          uchar   dat,i,j=255;
  67                          dat     =       byte_dat;
  68                          for(i=0;i<8;i++)
  69                                  {
  70                                          CLR_SCK;                                
  71                                          if(dat&0x80){SETB_SDA;}
  72                                                  else    {CLR_SDA;}                              
  73                                          SETB_SCK;
  74                                          dat<<=1;
  75                                  }
  76                          CLR_SCK;
  77                          SETB_SDA;               
  78                          SETB_SCK;               
  79                          while((SDA_EPROM)&&(j>10))
  80                                  {       
  81                                          #ifdef WAIT_FOR_ACK
  82                                          WAIT_FOR_ACK;                           
  83                                          #endif
  84                                          j--;                            
  85                                  }
  86                          CLR_SCK; 
  87                          if(j>10)        return  1;              //OK
  88                          else            return  0;              //ERROR 
  89                  }
  90          
  91          /*******************************************
  92          * 函数功能 : 从EPROM读一个字节
  93          * 入口参数 : (void)
  94          * 返回值   : (uchar)
  95          ********************************************/
  96          static uchar ReadByte_EPROM(void)
  97                  {
  98                          uchar   dat,i;
  99                          CLR_SCK;
 100                          SETB_SDA;
 101                          for(i=0;i<8;i++)
 102                                  {
 103                                          dat<<=1;
 104                                          CLR_SCK;
 105                                          SETB_SCK;
 106                                          if(SDA_EPROM)dat+=1;
 107                                  }
 108                          CLR_SCK;                
 109                          SETB_SDA;
 110                          SETB_SCK;
 111                          return  dat;
 112                  }
C51 COMPILER V8.02   24CEPROM                                                              01/01/2000 10:42:29 PAGE 3   

 113          
 114          /*******************************************
 115          * 函数功能 : 写一个字节到EPROM指定地址.
 116          * 入口参数 : (uchar dat,uint addr)
 117          *       返回值 : (bit)
 118          *         说明 : 连续执行本函数时中间应该有10毫秒
 119                                   的延时.以待ROM内部操作完毕.     
 120          ********************************************/
 121          bit     WriteByteToEPROM(uchar byte,uint f_add)
 122                  {
 123                          uchar   addr;
 124                          uchar   page;
 125                          bit             ack;            
 126                          page = (uchar)(f_add/256);
 127                          addr = (uchar)(f_add%256);
 128                          page <<= 1;
 129                          page &= 0x0E;
 130                          START_EPROM();
 131                          WriteByte_EPROM(0xA0|page);
 132                          WriteByte_EPROM(addr);
 133                          ack=WriteByte_EPROM(byte);
 134                          STOP_EPROM();
 135                          return  ack;
 136                  }
 137          
 138          /*******************************************
 139          * 函数功能 : 从EPROM的指定地址读取一个字节
 140          * 入口参数 : (uint  addr)
 141          * 返回值   : (uchar dat)
 142          ********************************************/
 143          uchar   ReadByteFromEPROM(uint f_add)
 144                  {
 145                          uchar   addr,dat;               
 146                          uchar   page;           
 147                          page = (uchar)(f_add/256);
 148                          addr = (uchar)(f_add%256);
 149                          page <<= 1;
 150                          page &= 0x0E;
 151                          START_EPROM();
 152                          WriteByte_EPROM(0xA0|page);
 153                          WriteByte_EPROM(addr);
 154                          START_EPROM();
 155                          WriteByte_EPROM(0xA1|page);                     
 156                          dat=ReadByte_EPROM();
 157                          STOP_EPROM();
 158                          return  dat;
 159                  }
 160          /*******************************************
 161          * 函数功能 : 从EPROM的指定地址进行读取,获得应得信号
 162          * 入口参数 : (uint  addr)
 163          * 返回值   : (uchar dat)
 164          ********************************************/ 
 165          bit     ReadACKFromEPROM(uint f_add)
 166                  {
 167                          uchar   addr;
 168                          bit     ack;            
 169                          uchar   page;           
 170                          page = (uchar)(f_add/256);
 171                          addr = (uchar)(f_add%256);
 172                          page <<= 1;
 173                          page &= 0x0E;
 174                          START_EPROM();
C51 COMPILER V8.02   24CEPROM                                                              01/01/2000 10:42:29 PAGE 4   

 175                          ack = WriteByte_EPROM(0xA0|page);
 176                          /*
 177                          WriteByte_EPROM(addr);
 178                          START_EPROM();
 179                          ack=WriteByte_EPROM(0xA1|page);                 
 180                          dat=ReadByte_EPROM();
 181                          */
 182                          STOP_EPROM();
 183                          return  ack;
 184                  }
 185          
 186          /******************THE END*********************/
 187          
 188          

C51 COMPILATION COMPLETE.  1 WARNING(S),  3 ERROR(S)

⌨️ 快捷键说明

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