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

📄 flash.lst

📁 C51单片机端
💻 LST
字号:
C51 COMPILER V8.01   FLASH                                                                 12/04/2006 10:50:22 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN FLASH.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FLASH.C LARGE OPTIMIZE(7,SPEED) BROWSE ORDER MODDP2 DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <intrins.h> 
   3          
   4          #include "config.h"
   5          #include "system.h"
   6          #include "isp.h"
   7          
   8          #define delay_us() { _nop_(); _nop_();  _nop_();}
   9          
  10          void vFlashCmd(unsigned char cmd)
  11          {
  12   1              #if Sp756P==1
  13   1                      v_A16  = 0;
  14   1                      v_A17  = 0;
  15   1              #else
                              vBankValue(0);
                      #endif
  18   1      
  19   1              vWriteFlash(0x5555, 0xAA);
  20   1              vWriteFlash(0x2AAA, 0x55);
  21   1              vWriteFlash(0x5555, cmd);
  22   1      }
  23          
  24          void vFlashErase(void)
  25          {
  26   1              unsigned char mPola,mPolb;
  27   1              
  28   1              vFlashCmd(0x80); //擦除命令序列
  29   1              vFlashCmd(0x10);
  30   1              
  31   1              mPola = vReadFlash(0x5555);
  32   1              mPolb   = vReadFlash(0x5555);
  33   1              while ((mPola ^ mPolb) == 0x40) 
  34   1              {
  35   2                      mPola = mPolb;
  36   2                      mPolb = vReadFlash(0x5555);
  37   2              }
  38   1      }
  39          
  40          void vWriteSector(unsigned char *wAddr,unsigned int mFSector,unsigned int wSector,unsigned char wBank)
  41          {
  42   1              unsigned char data wdat;
  43   1              unsigned int data i;
  44   1              unsigned char mPolc, mPold;
  45   1                      
  46   1              vExitInterrupt();
  47   1              vFlashCmd(0xA0);
  48   1              vBankSet(wBank);
  49   1              for(i=0;i<mFSector;i++)
  50   1              {
  51   2                      wdat = *(wAddr+i);
  52   2                      vWriteFlash(wSector,wdat);
  53   2                      wSector++;
  54   2              }
  55   1              wait_ms(Twc);
C51 COMPILER V8.01   FLASH                                                                 12/04/2006 10:50:22 PAGE 2   

  56   1              wSector--;
  57   1              mPolc = vReadFlash(wSector);
  58   1              mPold = vReadFlash(wSector);
  59   1              while ((mPolc ^ mPold) == 0x40) 
  60   1              {
  61   2                      mPolc = mPold;
  62   2                      mPold = vReadFlash(wSector);
  63   2              }
  64   1              vEnterInterrupt();
  65   1      }
  66          
  67          unsigned int vVerify(unsigned char *vBuff,unsigned int mFSector,unsigned int vAddress,unsigned char vBank)
  68          {
  69   1              unsigned char data vchar;
  70   1              unsigned char vHexcode; 
  71   1              unsigned int  vnum;
  72   1              unsigned int  vErrsum = 0;
  73   1      
  74   1              vExitInterrupt();
  75   1              vBankSet(vBank);
  76   1              
  77   1              for(vnum=0;vnum<mFSector;vnum++)
  78   1              {
  79   2                      vHexcode = *(vBuff+vnum);
  80   2                      vchar = vReadFlash(vAddress);
  81   2                      vAddress++;
  82   2                      if(vchar != vHexcode)vErrsum++;
  83   2              }
  84   1              vEnterInterrupt();
  85   1              return vErrsum; 
  86   1      }
  87          
  88          unsigned int vFlashId(void)
  89          {
  90   1              unsigned int flash_id=0;
  91   1              vFlashCmd(0x90);
  92   1              wait_ms(Twc);
  93   1              flash_id = vReadFlash(0x0000) << 8 | vReadFlash(0x0001);
  94   1              vFlashCmd(0xF0);
  95   1              wait_ms(Twc);
  96   1              return flash_id;
  97   1      }
  98          
  99          void  wait_ms(unsigned int click)
 100          {
 101   1              unsigned int idata i;
 102   1              unsigned int idata cli;
 103   1              cli = click;
 104   1              while(cli--)
 105   1              {
 106   2                      i=48;
 107   2                      do{
 108   3                              delay_us();
 109   3                      }while(i--);
 110   2              }
 111   1      }
 112          
 113          void vBankSet(unsigned char bank)
 114          { 
 115   1      #if Sp756P==1
 116   1              switch(bank)
 117   1              {
C51 COMPILER V8.01   FLASH                                                                 12/04/2006 10:50:22 PAGE 3   

 118   2                      case 0x00 :
 119   2                              v_A16  = 0;
 120   2                              v_A17  = 0;
 121   2                      break;
 122   2                      case 0x01 :
 123   2                              v_A16  = 1;
 124   2                              v_A17  = 0;
 125   2                      break;
 126   2                      case 0x02 :
 127   2                              v_A16  = 0;
 128   2                              v_A17  = 1;
 129   2                      break;
 130   2                      case 0x03 :
 131   2                              v_A16  = 1;
 132   2                              v_A17  = 1;
 133   2                      break;
 134   2                      default:
 135   2                              v_A16  = 0;
 136   2                              v_A17  = 0;
 137   2                      break;
 138   2              }
 139   1      #else
                      switch(bank)
                      {
                              case 0x00 :
                                      vBankValue(0);
                              break;
                              case 0x01 :
                                      vBankValue(1);
                              break;
                              case 0x02 :
                                      vBankValue(2);
                              break;
                              case 0x03 :
                                      vBankValue(3);
                              break;
                              default:
                                      vBankValue(0);
                              break;
                      }
                      #endif
 159   1      }
 160          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    597    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      26
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----       4
   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 + -