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

📄 flash.lst

📁 c8051f020实现4个 产UART 口
💻 LST
字号:
C51 COMPILER V7.50   FLASH                                                                 06/10/2007 23:11:22 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FLASH
OBJECT MODULE PLACED IN .\out\flash.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE flash.c LARGE OPTIMIZE(SIZE) REGFILE(.\out\mbtest.ORC) BROWSE INCDIR(C:\Kei
                    -l\C51\LIB\;D:\TEST_C020\MC_55_C\) DEBUG OBJECTEXTEND OBJECT(.\out\flash.obj)

line level    source

   1          #include "all.h"
   2          
   3          
   4          data unsigned char xdata *pwrite; // 程序存储器空间的指针(FLASH),指向待写地址
   5          data unsigned char code *pread; // 程序存储器空间的指针(FLASH),指向待读地址
   6          
   7          unsigned char code Cwf_ptotect[512] _at_   0x8000;
   8          unsigned char code CanKaoBase[20]="8df3g4g6fjkqw0";
   9          
  10          unsigned char idata Cwf_ok[20]="1234567890abc";   //维数不能屐,因为其它地方也要改动
  11          
  12          data unsigned char *pgen; // 一般指针
  13          idata char test; // 测试字符
  14          
  15          //将一个CODE数组的内容移动到另一个CODE数组
  16           //okkk =1:  会让两数组相同  okkk =0:  会让两数组不相同
  17           
  18          void ERASE_Flash(uchar okkk)  {   //okkk =1:  会让两数组相同  okkk =0:  会让两数组不相同  
  19   1                data   uchar CCtt;
  20   1                      
  21   1                    EA=0;
  22   1                       if(okkk==1)
  23   1                            strcpy(Cwf_ok,CanKaoBase); //okkk =1:  会让两数组相同 
  24   1                       else 
  25   1                            strcpy(Cwf_ok,"CanKaoBase"); //okkk =0:  会让两数组不相同  
  26   1                      // 禁止看门狗定时器
  27   1                      WDTCN = 0xde;
  28   1                      WDTCN = 0xad;
  29   1                      // 擦除512字节的信息页(位于0x8000)
  30   1                      FLSCL = 0x41; // 置位FLWE(FLSCL.0),以允许由用户软件写/擦除FLASH。
  31   1      
  32   1                      //置位PSEE(PSCTL.1),以允许FLASH 扇区擦除。
  33   1                   //置位PSWE(PSCTL.0),以允许FLASH 写。
  34   1                      PSCTL = 0x03; // 将PSWE和PSEE置‘1’(MOVX指令对应              // 的FLASH页
  35   1                      
  36   1                      pwrite = 0x8000; // 将指针指向待擦除页
  37   1                      *pwrite = 0; // 启动擦除过程
  38   1              //      for(ttty=0;ttty<60000;ttty++)  ;        for(ttty=0;ttty<60000;ttty++)  ;
  39   1                      
  40   1                      PSCTL = 0x01; // 清除PSEE,PSWE仍然置1
  41   1      
  42   1                      // LKPB加密
  43   1      #if(Is_JiaMi==1)  
                             pwrite = 0xFDFE; // LKPB加密
                              *pwrite++=0;
                              *pwrite=0;
              #endif
  48   1                  // LKPB加密
  49   1      
  50   1                      // MOVX指令将写到对应的地址
  51   1                      // 现在我们要拷贝字符串 <test_string> 的内容到FLASH页,从地址0x8000开始。
  52   1      
  53   1                 //  CCtt=0;
  54   1      
C51 COMPILER V7.50   FLASH                                                                 06/10/2007 23:11:22 PAGE 2   

  55   1                              pwrite = 0x8000; // 将指针指向待擦除页
  56   1                      pgen = Cwf_ok; // pgen 指向源字符串
  57   1                              
  58   1                      do {
  59   2                              
  60   2                               *pwrite++ = *pgen++; // 拷贝字节
  61   2                                       
  62   2                                
  63   2              } while (*pgen!=0); // 直到NULL结束符
  64   1                      *pwrite = NULL; // 用NULL结束目的字符串
*** WARNING C260 IN LINE 64 OF FLASH.C: '=': pointer truncation
  65   1                      
  66   1                      PSCTL = 0; // 禁止FLASH写
  67   1                      FLSCL = 0x00; // 禁止FLASH写
  68   1                      
  69   1                      
  70   1                      
  71   1                 
  72   1                      // 现在我们读写入的字符串
  73   1                      pread = 0x8000; // 初始化CODE读指针为字符串起始地址
  74   1                      test = 0x5a;
  75   1                      CCtt=0;
  76   1                      do {
  77   2                              test = *pread++;
  78   2                                      Cwf_ok[CCtt++]=test;
  79   2                                      if(CCtt>19) break;
  80   2                      } while  (*pread!=0);
  81   1                      Cwf_ok[CCtt]=0;
  82   1      
  83   1                       CLR_WDG ;  
  84   1                       EA=1;  
  85   1                      
  86   1      }
  87          
  88          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    194    ----
   CONSTANT SIZE    =     31    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7       1
   IDATA SIZE       =     21    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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