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