📄 myapp.lst
字号:
239 1 ch=ChipRead(g_CommBuffer[5]*512);
240 1 if(ch!=0xff)status=ID_ERR;
241 1 else status=ID_OK;
C51 COMPILER V7.04 MYAPP 04/08/2006 10:08:34 PAGE 5
242 1
243 1 if(g_CommBuffer[5]==0X00 && status==ID_OK)MyIspFlag=0x00;//不再唤醒
244 1
245 1
246 1 SendResponse(status,g_CommBuffer,0x00);
247 1
248 1 }
249 //addr len
250 //ret: data
251 void CMD_CHIPREADf()
252 {
253 1
254 1 unsigned int addr;
255 1 unsigned int len;
256 1 unsigned int i;
257 1
258 1
259 1 WatchDog();
260 1
261 1 addr = g_CommBuffer[5];
262 1 addr <<= 8;
263 1 addr += g_CommBuffer[6];
264 1
265 1 len = g_CommBuffer[7];
266 1 len <<= 8;
267 1 len += g_CommBuffer[8];
268 1
269 1
270 1
271 1 for(i=0;i<len;i++)
272 1 {
273 2 WatchDog();
274 2 g_CommBuffer[i]=ChipRead(addr+i);
275 2 }
276 1
277 1 WatchDog();
278 1 SendResponse(0x00,g_CommBuffer,len);
279 1
280 1 }
281 void CMD_READRAMf()
282 {
283 1 unsigned char ch;
284 1
285 1 WatchDog();
286 1
287 1 ch= (g_CommLen>>8);
288 1 g_CommBuffer[0]=ch;
289 1
290 1 ch= (g_CommLen&0xff);
291 1 g_CommBuffer[1]=ch;
292 1
293 1 SendResponse(0x00,g_CommBuffer,2);
294 1
295 1 }
296
297 //addr len data
298
299 void CMD_CHIPWRITEf()
300 {
301 1 unsigned int addr;
302 1 unsigned int len;
303 1
C51 COMPILER V7.04 MYAPP 04/08/2006 10:08:34 PAGE 6
304 1
305 1 unsigned char status=ID_OK;
306 1 unsigned char ch;
307 1
308 1 WatchDog();
309 1
310 1 addr = g_CommBuffer[5];
311 1 addr <<= 8;
312 1 addr += g_CommBuffer[6];
313 1
314 1 len = g_CommBuffer[7];
315 1 len <<= 8;
316 1 len += g_CommBuffer[8];
317 1
318 1
319 1
320 1
321 1 if(addr==0x00)
322 1 {
323 2 g_CommBuffer[9]=0xff;//把最开始 0x00,设置为FF
324 2
325 2 }
326 1
327 1
328 1 for(i=0;i<len;i++)
329 1 {
330 2
331 2 WatchDog();
332 2 ch=g_CommBuffer[9+i];
333 2 ChipWrite(addr+i,ch);
334 2 WatchDog();
335 2 WatchDog();
336 2
337 2 if(ch!=ChipRead(addr+i))
338 2 {
339 3 status=ID_ERR;
340 3 break;//写的不对
341 3 }
342 2
343 2
344 2 }
345 1
346 1 SendResponse(status,g_CommBuffer,0x00);
347 1
348 1 }
349
350
351 void CMD_SETPROTECTf()
352 {
353 1
354 1 WatchDog();
355 1 SetChipProtect();
356 1
357 1 SendResponse(ID_OK,g_CommBuffer,0x00);
358 1
359 1 }
360
361 //addr len xor
362 void CMD_VERIFYf()
363 {
364 1
365 1 unsigned int addr;
C51 COMPILER V7.04 MYAPP 04/08/2006 10:08:34 PAGE 7
366 1 unsigned int len;
367 1
368 1
369 1 unsigned char status;
370 1 unsigned char xorcode;
371 1 unsigned char ch;
372 1 unsigned char temp;
373 1
374 1
375 1
376 1 WatchDog();
377 1
378 1 addr = g_CommBuffer[5];
379 1 addr <<= 8;
380 1 addr += g_CommBuffer[6];
381 1
382 1 len = g_CommBuffer[7];
383 1 len <<= 8;
384 1 len += g_CommBuffer[8];
385 1
386 1
387 1
388 1 temp=g_CommBuffer[9];
389 1
390 1 xorcode=temp;
391 1 for(i=0;i<len;i++)
392 1 {
393 2 WatchDog();
394 2 ch=ChipRead(addr+i);
395 2 xorcode ^=ch;
396 2 }
397 1
398 1 if(xorcode==0)status=ID_OK;
399 1 else status=ID_ERR;
400 1
401 1
402 1 g_CommBuffer[0]=xorcode;
403 1 g_CommBuffer[1]=temp;
404 1
405 1 SendResponse(status,g_CommBuffer,2);
406 1
407 1 }
408
409 //get machineno
410 void CMD_GETMACHINEf()
411 {
412 1 WatchDog();
413 1 g_CommBuffer[0]=g_MachineNo;
414 1 SendResponse(ID_OK,g_CommBuffer,0x01);
415 1 }
416 //结束通讯
417 void CMD_ENDCOMf()
418 {
419 1 WatchDog();
420 1 SendResponse(ID_OK,g_CommBuffer,0x00);
421 1 }
422 void ErrCmd()
423 {
424 1 WatchDog();
425 1 SendResponse(COMM_CMD_ERR,g_CommBuffer,0x00);
426 1 }
427
C51 COMPILER V7.04 MYAPP 04/08/2006 10:08:34 PAGE 8
428
429 /*
430 unsigned char asctohex1(unsigned char ch)
431 {
432 if(ch>='0' && ch <= '9')return (ch-0x30);
433 if(ch>='A' && ch <= 'F')return (ch-0x37);
434 if(ch>='a' && ch <= 'f')return (ch-0x57);
435
436 }
437
438 unsigned char Asc2Hex(unsigned char *strData)
439 {
440 unsigned char ch;
441
442 ch = asctohex1(strData[0]);
443 ch <<= 4;
444 ch += asctohex1(strData[1]);
445
446 return (ch);
447
448 }
449
450 unsigned char hextoasc1(unsigned char ch)
451 {
452 if(ch>=0 && ch <= 9)return (ch+0x30);
453 else return (ch+0x37);
454
455 }
456
457 void Hex2Asc(unsigned char ch,unsigned char *strOut)
458 {
459 unsigned char temp;
460
461 temp=(ch>>4)& 0x0f;
462 strOut[0]=hextoasc1(temp);
463
464 temp=(ch)& 0x0f;
465 strOut[1]=hextoasc1(temp);
466
467 }
468 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1006 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 26
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 + -