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

📄 flash.lst

📁 16路巡检仪 该仪表采用c语言编写
💻 LST
字号:
C51 COMPILER V8.08   FLASH                                                                 02/25/2009 00:36:12 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN flash.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE flash.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include        "head.h"
   2          #include        "AT89X52.H"
   3          
   4          sfr             ISP_DATA        =0xe2;
   5          sfr              ISP_ADDRH      =0xe3;
   6          sfr             ISP_ADDRL       =0xe4;
   7          sfr             ISP_CMD         =0xe5;
   8          sfr             ISP_TRIG        =0xe6;
   9          sfr             ISP_CONTR   =0xe7;
  10          
  11          #define         ISP_BYTE_READ                   0x01        
  12          #define         ISP_BYTE_PROGRAM        0x02       
  13          #define         ISP_SECTOR_ERASE            0x03        
  14          #define         WAIT_TIME                               0x01
  15          #define         FLASH_BASE_ADD                  0x8000
  16          
  17          void flashB(uint         dataadd        )                                       //读写操作
  18          {       
  19   1              ISP_ADDRH=(uchar)(dataadd>>8);                  //传递高地址
  20   1              ISP_ADDRL=(uchar)(dataadd&0x00ff);              //传递低地址
  21   1              ISP_CONTR=WAIT_TIME;                                    //设置等待时间                  
  22   1              ISP_CONTR|=0x80;                                                //允许ISP_IAP操作 
  23   1              ISP_TRIG=0X46;                                                  //触发                  
  24   1              ISP_TRIG=0XB9;                                                  //触发
  25   1              _nop_();
  26   1              ISP_CONTR=0;
  27   1              ISP_TRIG=0;
  28   1              ISP_ADDRH=0xff;
  29   1              ISP_ADDRL=0xff;
  30   1      }
  31          
  32          void flashByteR(uchar *buf,uchar sq,uint sta,uint len)          //字节读
  33          {
  34   1              uint fdaadd;
  35   1              uint ty;
  36   1              fdaadd  =FLASH_BASE_ADD+sq*512+sta;
  37   1              ISP_CMD  =ISP_BYTE_READ;
  38   1              for(ty=0;ty<len;ty++)
  39   1              {
  40   2                      flashB(fdaadd);
  41   2                      buf[ty]=ISP_DATA;
  42   2                      fdaadd++;
  43   2              }       
  44   1      }
  45          void flashWB(uchar*buf,uchar sq,uint len)//字节写
  46          {
  47   1              uint    dataadd;
  48   1              uint    ty;
  49   1              uchar   t=0;
  50   1              for(ty=0;ty<len;ty++)
  51   1              {
  52   2                      if(ty==512*t)
  53   2                      {                               
  54   3                              dataadd  =FLASH_BASE_ADD+sq*0X200;
  55   3                              ISP_CMD  =ISP_SECTOR_ERASE;
C51 COMPILER V8.08   FLASH                                                                 02/25/2009 00:36:12 PAGE 2   

  56   3                              flashB(dataadd);
  57   3                              sq++;
  58   3                              t++;
  59   3                      }
  60   2                      ISP_DATA =buf[ty];
  61   2                      ISP_CMD  =ISP_BYTE_PROGRAM;     
  62   2                      flashB(dataadd);
  63   2                      dataadd++;      
  64   2              }
  65   1                      ISP_DATA =0x55;
  66   1                      ISP_CMD  =ISP_BYTE_PROGRAM;
  67   1                      flashB(dataadd);
  68   1                      dataadd++;
  69   1                      ISP_DATA =0xaa;
  70   1                      ISP_CMD  =ISP_BYTE_PROGRAM;     
  71   1                      flashB(dataadd);
  72   1      }
  73          
  74          void flashFByteR(float *buf,uchar sq,uint sta,uint len) //4字节读
  75          {
  76   1              uint fdaadd;
  77   1              uint ty;
  78   1              union ITOC
  79   1              {
  80   1                      uchar cda[4];
  81   1                      float  ida;     
  82   1              } crc;
  83   1              fdaadd  =FLASH_BASE_ADD+sq*512+sta;
  84   1              ISP_CMD  =ISP_BYTE_READ;
  85   1              for(ty=0;ty<len;ty++)
  86   1              {
  87   2                      flashB(fdaadd);
  88   2                      crc.cda[0]=ISP_DATA;
  89   2                      fdaadd++;
  90   2                      flashB(fdaadd);
  91   2                      crc.cda[1]=ISP_DATA;
  92   2                      fdaadd++;
  93   2                      flashB(fdaadd);
  94   2                      crc.cda[2]=ISP_DATA;
  95   2                      fdaadd++;
  96   2                      flashB(fdaadd);
  97   2                      crc.cda[3]=ISP_DATA;
  98   2                      buf[ty]=crc.ida;
  99   2                      fdaadd++;
 100   2                      
 101   2              }       
 102   1      }
 103          
 104          void flashW(float*buf,uchar sq,uint len)                        //四个字节写
 105          {
 106   1              uint dataadd;
 107   1              uchar tt=0;
 108   1              union ITOC
 109   1              {
 110   1                      uchar cda[4];
 111   1                      float  ida;     
 112   1              } crc;
 113   1              uint ty;
 114   1              for(ty=0;ty<len;ty++)
 115   1              {
 116   2                      if((ty*4)==512*tt)
 117   2                      {                               
C51 COMPILER V8.08   FLASH                                                                 02/25/2009 00:36:12 PAGE 3   

 118   3                              dataadd  =FLASH_BASE_ADD+sq*0X200;
 119   3                              ISP_CMD  =ISP_SECTOR_ERASE;
 120   3                              flashB(dataadd);
 121   3                              sq++;
 122   3                              tt++;
 123   3                      }
 124   2                      crc.ida=buf[ty];
 125   2                      ISP_DATA =crc.cda[0];
 126   2                      ISP_CMD  =ISP_BYTE_PROGRAM;     
 127   2                      flashB(dataadd);
 128   2                      dataadd++;
 129   2                      ISP_DATA =crc.cda[1];
 130   2                      ISP_CMD  =ISP_BYTE_PROGRAM;     
 131   2                      flashB(dataadd);
 132   2                      dataadd++;
 133   2                      ISP_DATA =crc.cda[2];
 134   2                      ISP_CMD  =ISP_BYTE_PROGRAM;     
 135   2                      flashB(dataadd);
 136   2                      dataadd++;
 137   2                      ISP_DATA =crc.cda[3];
 138   2                      ISP_CMD  =ISP_BYTE_PROGRAM;     
 139   2                      flashB(dataadd);
 140   2                      dataadd++;
 141   2              }
 142   1                      ISP_DATA =0x55;
 143   1                      ISP_CMD  =ISP_BYTE_PROGRAM;
 144   1                      flashB(dataadd);
 145   1                      dataadd++;
 146   1                      ISP_DATA =0xaa;
 147   1                      ISP_CMD  =ISP_BYTE_PROGRAM;     
 148   1                      flashB(dataadd);
 149   1      }
 150          
 151          
 152          void flashtW(int *buf,uchar sq,uint len)
 153                  {
 154   1                      uint            dataadd;
 155   1                      uchar   t=0;
 156   1                      uint            Tn;
 157   1                      union ITOC
 158   1                      {
 159   1                              char cda[2];
 160   1                              int  ida;       
 161   1                      } crc;
 162   1                      for(Tn=0;Tn<len;Tn++)
 163   1                      {
 164   2                              if(Tn==128*t)
 165   2                              {                               
 166   3                                      dataadd  =FLASH_BASE_ADD+sq*0X200;
 167   3                                      ISP_CMD  =ISP_SECTOR_ERASE;//擦除一个扇区
 168   3                                      flashB(dataadd);//擦除
 169   3                                      sq++;
 170   3                                              
 171   3                              }
 172   2                              crc.ida=buf[Tn];
 173   2                              ISP_DATA =crc.cda[0];
 174   2                              ISP_CMD  =ISP_BYTE_PROGRAM; //写入操作
 175   2                              flashB(dataadd);
 176   2                              dataadd++;
 177   2                              ISP_DATA =crc.cda[1];
 178   2                              ISP_CMD  =ISP_BYTE_PROGRAM; //写入操作
 179   2                              flashB(dataadd);
C51 COMPILER V8.08   FLASH                                                                 02/25/2009 00:36:12 PAGE 4   

 180   2                              dataadd++;      
 181   2                      }
 182   1                              ISP_DATA =0x55;
 183   1                              ISP_CMD  =ISP_BYTE_PROGRAM; //写入操作
 184   1                              flashB(dataadd);
 185   1                              dataadd++;
 186   1                              ISP_DATA =0xaa;
 187   1                              ISP_CMD  =ISP_BYTE_PROGRAM; //写入操作
 188   1                              flashB(dataadd);
 189   1              }
 190          
 191          void    flashtR(int*buf,uchar sq,uint sta,uint len)
 192          {
 193   1              uint fdaadd;
 194   1              uint ty;
 195   1              union ITOC
 196   1              {
 197   1                      char cda[2];
 198   1                      int      ida;   
 199   1              } crc;
 200   1              fdaadd  =FLASH_BASE_ADD+sq*512+sta;
 201   1              ISP_CMD  =ISP_BYTE_READ;
 202   1              for(ty=0;ty<len;ty++)
 203   1              {
 204   2                      flashB(fdaadd);
 205   2                      crc.cda[0]=ISP_DATA;
 206   2                      fdaadd++;
 207   2                      flashB(fdaadd);
 208   2                      crc.cda[1]=ISP_DATA;
 209   2                      buf[ty]=crc.ida;
 210   2                      fdaadd++;       
 211   2              }       
 212   1      }
 213          
 214          
 215          
 216          
 217          
 218          
 219          
 220          
 221          
 222          
 223          
 224          
 225          
 226          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    933    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      81
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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