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