📄 flash.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 + -