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

📄 flash.lst

📁 监控行业车辆检测器源代码
💻 LST
字号:
C51 COMPILER V8.05a   FLASH                                                                08/04/2008 17:24:05 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN Flash.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Flash.c LARGE ROM(COMPACT) DEBUG OBJECTEXTEND

line level    source

   1          #include "STC12C5410AD.h"
   2          #include "app.h"
   3          #include <string.h>
   4          #include <stdio.h>
   5          #include <INTRINS.H>
   6          
   7          unsigned char  flash_byte_read(unsigned int address);
   8          void  sector_erase(unsigned int address);
   9          void  flash_MuxByteWrite(unsigned int  address,unsigned char *pData,unsigned char len);
  10          void flash_byte_Write(unsigned int address,unsigned char buffer);
  11          
  12          extern unsigned int GetSetInitCount(unsigned int  Speed);
  13          
  14          extern  unsigned int   Current_Montor_Count;
  15          extern  unsigned int  CurrentSpeed;
  16          
  17          extern struct  _LED
  18          {
  19             unsigned char  status ;   // LED状态
  20             unsigned char  temp  ;   // 温度值
  21          }LED;
  22          
  23          unsigned char  flash_byte_read(unsigned int address)
  24          {
  25   1         ISP_CONTR = ENABLE_ISP;
  26   1         ISP_CMD   = IAP_BYTE_READ;
  27   1         ISP_ADDRH = address>>8;
  28   1         ISP_ADDRL = address&0x00ff;
  29   1         ISP_TRIG  = 0x46;
  30   1         ISP_TRIG  = 0xb9;
  31   1         return(ISP_DATA);
  32   1      } 
  33          
  34          
  35          void flash_byte_Write(unsigned int address,unsigned char buffer)
  36          {
  37   1         ISP_CONTR = ENABLE_ISP;
  38   1         ISP_CMD   = IAP_BYTE_WRITE;
  39   1         ISP_ADDRH = (address>>8);
  40   1         ISP_ADDRL = address&0x00ff;
  41   1         ISP_DATA  = buffer ;
  42   1         ISP_TRIG  = 0x46;
  43   1         ISP_TRIG  = 0xb9;
  44   1      }
  45          void  flash_MuxByteWrite(unsigned int  address,unsigned char *pData,unsigned char len)
  46          {
  47   1         unsigned char i;
  48   1      
  49   1         for(i=0;i<len;i++)
  50   1            {
  51   2                       flash_byte_Write(address++,*pData++);
  52   2                       
  53   2                }
  54   1      
  55   1      }
C51 COMPILER V8.05a   FLASH                                                                08/04/2008 17:24:05 PAGE 2   

  56          
  57          void  sector_erase(unsigned int address)
  58          {
  59   1         ISP_CONTR = ENABLE_ISP;
  60   1         ISP_CMD   = IAP_SECTOR_ERASE;
  61   1         ISP_ADDRH = (unsigned char)(address>>8);
  62   1         ISP_ADDRL = (unsigned char)(address&0x00ff);
  63   1         ISP_TRIG  = 0x46;
  64   1         ISP_TRIG  = 0xb9;
  65   1      } 
  66          
  67          extern unsigned char PS2_temp[13];
  68          
  69           ScanTableIndexDef   ScanTableindex;
  70           IndexPamDef         IndexPam;
  71          
  72          void CreateScanTable(void)
  73          {
  74   1         ScanTableindex.sum =2;
  75   1         ScanTableindex.current = 1;
  76   1         ScanTableindex.systemstatus = 1;
  77   1         sector_erase(SaveTableAddressSum);
  78   1         flash_MuxByteWrite(SaveTableAddressSum,(unsigned char*)&ScanTableindex,sizeof(ScanTableindex));
  79   1         
  80   1         sector_erase(SaveTableIndexAddress);
  81   1         
  82   1         PS2_temp[0] = 9;
  83   1         PS2_temp[1] = 7;
  84   1         PS2_temp[2] = 8;
  85   1         PS2_temp[3] = 7;
  86   1         PS2_temp[4] = 1;
  87   1         PS2_temp[5] = 2;
  88   1         PS2_temp[6] = 1;
  89   1         PS2_temp[7] = 0;
  90   1         PS2_temp[8] = 2;
  91   1         PS2_temp[9] = 4;
  92   1         PS2_temp[10] = 9;
  93   1         PS2_temp[11] = 4;
  94   1         PS2_temp[12] = 8;
  95   1      
  96   1         flash_MuxByteWrite(SaveTableIndexAddress,PS2_temp,13);
  97   1      
  98   1         IndexPam.maxspeed = 2700;
  99   1         IndexPam.minspeed = 800;
 100   1         IndexPam.maxtemp  = 80;
 101   1         IndexPam.mintemp  = 10;
 102   1         IndexPam.fengjiworktime =  1;
 103   1         IndexPam.fireworktime   =  1;
 104   1         IndexPam.bigsongliaoworktime =  2;
 105   1         IndexPam.bigsongliaostoptime =  25;
 106   1         IndexPam.smallsongliaoworktime =2;
 107   1         IndexPam.smallsongliaostoptime =65;
 108   1         IndexPam.stopfengjiworktime    = 1;
 109   1         IndexPam.setbigholdtime                = 1;
 110   1         IndexPam.setsmallholdtime      = 1;
 111   1      
 112   1         flash_MuxByteWrite(SaveTableIndexAddress+13,
 113   1                                        (unsigned char*)&IndexPam,sizeof(IndexPam));
 114   1         PS2_temp[0] = 9;
 115   1         PS2_temp[1] = 7;
 116   1         PS2_temp[2] = 8;
 117   1         PS2_temp[3] = 7;
C51 COMPILER V8.05a   FLASH                                                                08/04/2008 17:24:05 PAGE 3   

 118   1         PS2_temp[4] = 5;
 119   1         PS2_temp[5] = 0;
 120   1         PS2_temp[6] = 5;
 121   1         PS2_temp[7] = 3;
 122   1         PS2_temp[8] = 8;
 123   1         PS2_temp[9] = 1;
 124   1         PS2_temp[10] = 5;
 125   1         PS2_temp[11] = 3;
 126   1         PS2_temp[12] = 7;
 127   1      
 128   1         flash_MuxByteWrite(SaveTableIndexAddress+13+sizeof(IndexPam),PS2_temp,13);
 129   1      
 130   1         IndexPam.maxspeed = 800;
 131   1         IndexPam.minspeed = 800;
 132   1         IndexPam.maxtemp  = 60;
 133   1         IndexPam.mintemp  = 20;
 134   1         IndexPam.fengjiworktime =  1;
 135   1         IndexPam.fireworktime   =  1;
 136   1         IndexPam.bigsongliaoworktime =  2;
 137   1         IndexPam.bigsongliaostoptime =  5;
 138   1         IndexPam.smallsongliaoworktime =2;
 139   1         IndexPam.smallsongliaostoptime =15;
 140   1         IndexPam.stopfengjiworktime    = 1;
 141   1         IndexPam.setbigholdtime                = 1;
 142   1         IndexPam.setsmallholdtime      = 1;
 143   1      
 144   1         flash_MuxByteWrite(SaveTableIndexAddress+13+sizeof(IndexPam)+13,
 145   1                                        (unsigned char*)&IndexPam,sizeof(IndexPam));
 146   1      
 147   1      }
 148          
 149          void ReadScanTable(void)
 150          {
 151   1              unsigned char i;
 152   1              unsigned int addr;
 153   1              unsigned char *p;
 154   1       EA = 0;
 155   1              addr =  SaveTableAddressSum;
 156   1              ScanTableindex.sum = flash_byte_read(addr++);
 157   1              ScanTableindex.current = flash_byte_read(addr++);
 158   1      
 159   1              p = (unsigned char *)&IndexPam;
 160   1      
 161   1              addr = SaveTableIndexAddress  + (13 + sizeof(IndexPam))*ScanTableindex.current+13;
 162   1      
 163   1          for(i=0;i<sizeof(IndexPam);i++)
 164   1              {
 165   2                *p++  =  flash_byte_read(addr++);
 166   2              }
 167   1              
 168   1         EA = 1;  
 169   1      }
 170          void UpdateCurrentPam(void)
 171          {
 172   1          unsigned char i,j;
 173   1              unsigned int addr;
 174   1              unsigned char *p;
 175   1       EA = 0;
 176   1              addr =  SaveTableAddressSum;
 177   1      
 178   1              ScanTableindex.sum = flash_byte_read(addr++);
 179   1              ScanTableindex.current = flash_byte_read(addr++);
C51 COMPILER V8.05a   FLASH                                                                08/04/2008 17:24:05 PAGE 4   

 180   1      
 181   1      
 182   1         for(i=0;i<ScanTableindex.sum;i++)
 183   1            {
 184   2                  addr = SaveTableIndexAddress + (13 + sizeof(IndexPam))*i;
 185   2      
 186   2                      if( (PS2_temp[0] == flash_byte_read(addr++) )   &&
 187   2                              (PS2_temp[1] == flash_byte_read(addr++) )       &&
 188   2                              (PS2_temp[2] == flash_byte_read(addr++) )       &&
 189   2                              (PS2_temp[3] == flash_byte_read(addr++) )       &&
 190   2                              (PS2_temp[4] == flash_byte_read(addr++) )       &&
 191   2                              (PS2_temp[5] == flash_byte_read(addr++) )       &&
 192   2                              (PS2_temp[6] == flash_byte_read(addr++) )       &&
 193   2                              (PS2_temp[7] == flash_byte_read(addr++) )       &&
 194   2                              (PS2_temp[8] == flash_byte_read(addr++) )       &&
 195   2                              (PS2_temp[9] == flash_byte_read(addr++) )       &&
 196   2                              (PS2_temp[10] == flash_byte_read(addr++) )      &&
 197   2                              (PS2_temp[11] == flash_byte_read(addr++) )      &&
 198   2                              (PS2_temp[12] == flash_byte_read(addr++) )      )
 199   2                       {
 200   3                            p = (unsigned char *)&IndexPam;
 201   3      
 202   3                                for(j=0;j<sizeof(IndexPam);j++)
 203   3                                 {
 204   4                                   *p++  =  flash_byte_read(addr++);
 205   4                                 }
 206   3                      
 207   3                              break;
 208   3                       }
 209   2                      
 210   2                }
 211   1       
 212   1              if(ScanTableindex.current != i)  // 更新当前索引
 213   1                {
 214   2                       ScanTableindex.current = i;
 215   2                       sector_erase(SaveTableAddressSum);
 216   2               flash_MuxByteWrite(SaveTableAddressSum,(unsigned char*)&ScanTableindex,sizeof(ScanTableindex));
 217   2                }
 218   1        EA = 1;
 219   1      }
 220          
 221           
 222          void savesystemstatus(unsigned char status)
 223          {
 224   1              ScanTableindex.systemstatus = status;  //  
 225   1              sector_erase(SaveTableAddressSum);
 226   1          flash_MuxByteWrite(SaveTableAddressSum,(unsigned char*)&ScanTableindex,sizeof(ScanTableindex));
 227   1      
 228   1      }  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    938    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     22      19
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -