📄 mb90092.lst
字号:
433 3 if(offset_biggest>(8-i))
434 3 {
435 4 for(j=offset_biggest;j>(offset_biggest-(8-i));j--)
436 4 {
437 5 read_block=0x000000+j*0x100;
438 5 Config_Word(i+offset_biggest-j);
439 5 }
440 4 }
441 3 else
442 3 {
443 4 for(j=offset_biggest;j>-1;j--)
444 4 {
445 5 read_block=j*0x100;
446 5 Config_Word(i+offset_biggest-j);
447 5 }
448 4 //公用信息第一区域显示完成,显示第二区域;
449 4 for(j=15;j>(7+i+offset_biggest);i--)
450 4 {
451 5 read_block=address_pointer+i*0x100;
452 5 Config_Word(16+i+offset_biggest-j);
453 5 }
454 4 }
455 3 }
456 2 }
457 1
458 1 else //no personal message
459 1 {
460 2 if(wink_offset>7)
461 2 {
462 3 if(offset_biggest>=(wink_offset-1)) //full of display in lineable
463 3 {
464 4 for(j=offset_biggest;j<(offset_biggest-(8-i));j--)
465 4 {
466 5 read_block=0x000000+j*0x100;
467 5 Config_Word(offset_biggest-j);
468 5 }
469 4 }
470 3 else
471 3 {
472 4 for(j=offset_biggest;j>-1;j--)
473 4 {
474 5 read_block=j*0x100;
475 5 Config_Word(offset_biggest-j);
476 5 }
477 4 //公用信息第一区域显示完成,显示第二区域;
478 4 for(j=15;j>(7+offset_biggest);i--)
479 4 {
480 5 read_block=address_pointer+j*0x100;
481 5 Config_Word(16+offset_biggest-j);
482 5 }
483 4 }
484 3 }
485 2 //not full of pub_message
486 2 else
487 2 {
488 3 for(j=offset_biggest;j>-1;j--)
C51 COMPILER V7.02b MB90092 06/20/2006 18:46:35 PAGE 9
489 3 {
490 4 read_block=(ulong)(j*0x100);
491 4 Config_Word(offset_biggest-j);
492 4 }
493 3 //公用信息第一区域显示完成,显示第二区域;
494 3 if(wink_offset>(offset_biggest+1))
495 3 {
496 4 for(j=15;j>(7+offset_biggest);i--)
497 4 {
498 5 read_block=address_pointer+j*0x100;
499 5 Config_Word(16+offset_biggest-j);
500 5 }
501 4 }
502 3 }
503 2 }
504 1 }
505
506 /*-----------------------------------------*/
507 /* 构置一幅完整的信息画面
508 描述:在已知read_block的情况下,需要显示完整画面
509 必须要带来的read_block,infonumber
510 */
511 /*---------------------------------------*/
512 void Config_Screen()
513 {
514 1 bit Double_bit,puntuation_bit;
515 1 uchar data i,j,k,Line,Collum;
516 1 uint data temp,High_Char;
517 1 uchar xdata *mm;
518 1
519 1 j=(uchar)(read_block>>16);
520 1 P1=j;
521 1 AUXR=0x03;
522 1
523 1 Line=0;
524 1 Collum=2;
525 1 Double_bit=FALSE;
526 1 puntuation_bit=FALSE;
527 1 High_Char=0x0000;
528 1
529 1 mm=read_block+1;
530 1 k=*mm;
531 1
532 1 for(i=2;i<(k+2);i++)
533 1 {
534 2 AUXR=0x03;
535 2 mm=read_block+i;
536 2 j=*mm;
537 2 AUXR=0x00;
538 2 if(Double_bit) //双字节才是一个字
539 2 {
540 3 if(puntuation_bit)
541 3 {
542 4 j=j-0xa0;
543 4 puntuation_bit=FALSE;
544 4 }
545 3 temp=High_Char+j;
546 3 Double_bit=FALSE;
547 3 if(Collum>15)
548 3 {
549 4 Line++;
550 4 Collum=2;
C51 COMPILER V7.02b MB90092 06/20/2006 18:46:35 PAGE 10
551 4 disp_num(Line,Collum,temp,1,1);
552 4 }
553 3 else
554 3 {
555 4 Collum++;
556 4 disp_num(Line,Collum,temp,1,1);
557 4 }
558 3
559 3 }
560 2 else
561 2 {
562 3 if(j<0x9f)
563 3 {
564 4 temp=(uint)(j);
565 4 if(Collum>15)
566 4 {
567 5 Line++;
568 5 Collum=2;
569 5 disp_num(Line,Collum,temp,1,1);
570 5 }
571 4 else
572 4 {
573 5 Collum++;
574 5 disp_num(Line,Collum,temp,1,1);
575 5 }
576 4 }
577 3 else
578 3 {
579 4 if(j==0xa3)
580 4 {
581 5 j=0x00;
582 5 puntuation_bit=TRUE;
583 5 }
584 4 High_Char=(uint)(j);
585 4 High_Char=High_Char<<8;
586 4 Double_bit=TRUE;
587 4 }
588 3 }
589 2 }
590 1 }
591 /*------------------------------------------------*/
592 /* 主屏显示
593
594 描述:根据self_newscount, pub_newscount, wink_offset, address_pointer
595 的变量指示,计算出相应读取地址,根据
596 读取得字数,显示信息具体内容
597
598 */
599 /*------------------------------------------------*/
600 void disp_main()
601 {
602 1 uchar data i;
603 1
604 1 send_byte(0xab);/*--------command 5----------*/
605 1 send_byte(0x00);
606 1
607 1 i=self_newscount+pub_newscount- wink_offset;
608 1 if(i<self_newscount) //in self messages zone
609 1 {
610 2 if(self_bigoffset>=i)//在下方
611 2 {
612 3 read_block=address_pointer+(self_bigoffset-i)*0x100;
C51 COMPILER V7.02b MB90092 06/20/2006 18:46:35 PAGE 11
613 3 Config_Screen();
614 3 }
615 2
616 2 else //在上方
617 2 {
618 3 read_block=address_pointer+(16+self_bigoffset-i)*0x100;
619 3 Config_Screen();
620 3 }
621 2 }
622 1 else //in pub messages zone
623 1 {
624 2 if(pub_bigoffset>=(i-self_newscount))
625 2 {
626 3 read_block=(uint)((pub_bigoffset-(i-self_newscount))*0x100);
627 3 Config_Screen();
628 3 }
629 2
630 2 else //
631 2 {
632 3 read_block=(16+pub_bigoffset-(i-self_newscount))*0x100;
633 3 Config_Screen();
634 3 }
635 2 }
636 1 }
637
638
639
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2089 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 27
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -