📄 flash.lst
字号:
408 2 }
409 1 Count_BigandSmall();
410 1 Set_Offset();
411 1 AUXR=0x00;
412 1 }
413 /*---------------------------------------------*/
414 /* 重新排列大小编号
415 */
416 /*-------------------------------------------*/
417 Offset_Resize()
418 {
419 1 uchar data i;
420 1
421 1 if(offset_biggest==0)
422 1 {
423 2 message_group[0]=1;
424 2 }
425 1
426 1 else if(offset_biggest<16) //没有满
427 1 {
C51 COMPILER V7.02b FLASH 06/20/2006 18:46:35 PAGE 8
428 2 for(i=0;i<16;i++)
429 2 {
430 3 if(i==offset_smallest)
431 3 {
432 4 message_group[i]=offset_biggest+1;
433 4 }
434 3 }
435 2 }
436 1
437 1 else //满了
438 1 {
439 2 for(i=0;i<16;i++)
440 2 {
441 3 if(i==offset_smallest)
442 3 {
443 4 message_group[i]=16;
444 4 }
445 3 else
446 3 {
447 4 message_group[i]=message_group[i]-1;
448 4 }
449 3 }
450 2 }
451 1 }
452 /*------------------------------------------------------*/
453 /* Save Message To Specified Flash Address
454 Desription: save the receive message frame to the specified address flash
455 if the address low than 0x1000,must be public
456 所有信息只能看,不能够删除 !!
457 */
458 /*------------------------------------------------------*/
459 void Save_Message_Flash()
460 {
461 1 ulong data t;
462 1
463 1 //房号<33..读编号x0x10,读信息x1000
464 1 if(lounumH!=0)
465 1 {
466 2 read_block=((Dec_Cem(lounumH)+Dec_Cem(lounumL-1)/0x10)*0x20+Dec_Cem(lounumL-1)%0x10)*0x01000;
467 2 }
468 1 else
469 1 {
470 2 read_block=0x00000000;
471 2 }
472 1
473 1 t=read_block;
474 1 Count_Flash_Offset(); //找出最老时间存储的短信息位置,地址指示在offset_smallest
475 1 if(offset_biggest>15) //需要搽除信息扇区
476 1 {
477 2 //不是公共信息,等待应答,如果时间到没有应答,搽除本暂时扇区,退出;有就全部转移到指定区域
478 2 /*
479 2 if(lounumH!=0)
480 2 {
481 2 init_timer2();
482 2 while((timeout2<0x64)&&(EnWork_bit==0))
483 2 {
484 2 if(Rx_bit==1)
485 2 {
486 2 if((Rx_count==7)&&(*(info_buffer+1)==EXTBACK))
487 2 {
488 2 EnWork_bit=1;
489 2 }
C51 COMPILER V7.02b FLASH 06/20/2006 18:46:35 PAGE 9
490 2 Clr_Rx();
491 2 }
492 2 }
493 2 clr_timer2();
494 2 }
495 2 if((EnWork_bit==1)||(lounumH==0)) //answer ok or public message
496 2 {
497 2 */
498 2 if(count_copy>15)
499 2 {
500 3 count_copy=0;
501 3 }
502 2 else
503 2 {
504 3 count_copy++;
505 3 }
506 2 Offset_Resize();
507 2 write_block=0x10000+count_copy*0x1000+offset_smallest*0x100;
508 2 save_infomessage(); //save to temp zone
509 2 Clr_Rx();
510 2 Copy_Message(); //from read_block to temp zone
511 2 Sector_Erase_Op(t);
512 2 transfer_infomation();
513 2 Sector_Erase_Op(0x10000+count_copy*0x1000);
514 2 // }
515 2 }
516 1 //空间还没有存储满,不用把使用扇区搽除
517 1 else
518 1 {
519 2 /*
520 2 if(lounumH!=0)
521 2 {
522 2 init_timer2();
523 2 while((timeout2<0x64)&&(EnWork_bit==0))
524 2 {
525 2 if(Rx_bit==valid)
526 2 {
527 2 if((Rx_count==7)&&(*(info_buffer+1)==EXTBACK))
528 2 {
529 2 EnWork_bit=1;
530 2 Clr_Rx();
531 2 }
532 2 else
533 2 {
534 2 Clr_Rx();
535 2 }
536 2 }
537 2 }
538 2 clr_timer2();
539 2 }
540 2 if((EnWork_bit==1)||(lounumH==0)) //answer ok
541 2 {
542 2 */
543 2 write_block=t+offset_smallest*0x100;
544 2 message_group[offset_smallest]=message_group[offset_smallest]+1;
545 2 save_infomessage();
546 2 Clr_Rx();
547 2 // }
548 2 }
549 1 EnWork_bit=0;
550 1 }
551 /*-----------------------------------------------*/
C51 COMPILER V7.02b FLASH 06/20/2006 18:46:35 PAGE 10
552 /*
553 bit Read_ID_Op()
554 {
555 // For BYTE mode: (Depends on system application)
556 uchar i;
557
558 AUXR=0x03; //out ram read/write enable
559 _nop_();
560 _nop_();
561 P1=0;
562
563 XBYTE[0xaaaa]=0xaa;
564 XBYTE[0x5555]=0x55;
565 XBYTE[0xaaaa]=0x90;
566 _nop_();
567
568 i=XBYTE[0x0002]; // read mfr.ID
569 if(i == 0x7e)
570 {
571 i=XBYTE[0x001c];
572 if(i != 0x00)
573 {
574 i=XBYTE[0x001e];
575 if(i != 0x1a)
576 {
577 return(TRUE);
578 }
579 else
580 {
581 return(FALSE);
582 }
583 }
584 else
585 {
586 return( FALSE);
587 }
588 }
589 else
590 {
591 return(FALSE);
592 }
593 XBYTE[0xaaaa]=0xaa;
594 XBYTE[0x5555]=0x55;
595 XBYTE[0xaaaa]=0xf0;
596 AUXR=0;
597 }
598 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1784 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 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 + -