?? main.lst
字號:
0530 598 Delay:
0530 758CDC 599 MOV TH0, #0xDC
0533 758A66 600 MOV TL0, #0x66
0536 D28C 601 SETB TR0
0538 308DFD 602 JNB TF0, $
053B C28C 603 CLR TR0
053D C28D 604 CLR TF0
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 15
053F DFEF 605 DJNZ R7, Delay
0541 22 606 RET
607
608
609 ;*************************************************************************
610 ;函數:isupper()
611 ;功能:判斷字符c是否為大寫字母
612 ;*************************************************************************
613 ; bit isupper(unsigned char c)
614 ; c = R7
615 ; 返回值 = CY
0542 616 isupper:
617 ;{
618 ; if ( (c >= 'A') && (c <= 'Z') )
619 BLO R7, #'A', isupper_endif
624 BHI R7, #'Z', isupper_endif
629 ; {
630 ; return 1;
054E D3 631 SETB C
054F 22 632 RET
633 ; }
0550 634 isupper_endif:
635 ; return 0;
0550 C3 636 CLR C
637 ;}
0551 22 638 RET
639
640
641 ;*************************************************************************
642 ;函數:islower()
643 ;功能:判斷字符c是否為小寫字母
644 ;*************************************************************************
645 ; bit islower(unsigned char c)
646 ; c = R7
647 ; 返回值 = CY
0552 648 islower:
649 ;{
650 ; if ( (c >= 'a') && (c <= 'z') )
651 BLO R7, #'a', islower_endif
656 BHI R7, #'z', islower_endif
661 ; {
662 ; return 1;
055E D3 663 SETB C
055F 22 664 RET
665 ; }
0560 666 islower_endif:
667 ; return 0;
0560 C3 668 CLR C
669 ;}
0561 22 670 RET
671
672
673 ;*************************************************************************
674 ;函數:void PutChar(unsigned char c)
675 ;功能:滾動顯示一個字母或漢字
676 ;參數:
677 ; c:字母或漢字的編碼,當c>=0x80時視為漢字
678 ;*************************************************************************
679 ; void PutChar(unsigned char c)
680 ; c = R7
0562 681 PutChar:
682 ;{
683 ; unsigned int a; //地址變量
684 ; unsigned char i,j; //循環變量
685 ; unsigned char t; //臨時變量
686 ; unsigned char code *Tab; //指針,用于查表
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 16
687 ; 分配:a = (R2,R3)
688 ; 分配:i = R4
689 ; 分配:j = R5
690 ; 分配:t = R6
691 ; 分配:*Tab = (0x18,0x19)
0562 C002 692 PUSH 0x02
0564 C003 693 PUSH 0x03
0566 C004 694 PUSH 0x04
0568 C005 695 PUSH 0x05
056A C006 696 PUSH 0x06
056C C018 697 PUSH 0x18
056E C019 698 PUSH 0x19
699 ; t = 8;
0570 7E08 700 MOV R6, #8
701 ; if ( c >= 0x80 ) //如果c是漢字
702 BLO R7, #0x80, PutChar_elseif1
707 ; {
708 ; t = 16;
0578 7E10 709 MOV R6, #16
710 ; a = 32 * ( c - 0x80 );
057A EF 711 MOV A, R7
057B C3 712 CLR C
057C 9480 713 SUBB A, #0x80
057E 75F020 714 MOV B, #32
0581 A4 715 MUL AB
0582 AAF0 716 MOV R2, B
0584 FB 717 MOV R3, A
718 ; Tab = HanziTab;
0585 751803 719 MOV 0x18, #HIGH(HanziTab)
0588 75195E 720 MOV 0x19, #LOW(HanziTab)
721 ; }
058B 8032 722 SJMP PutChar_endif
723 ; else if ( isupper(c) ) //如果c是大寫字母
058D 724 PutChar_elseif1:
058D 120542 725 LCALL isupper
0590 5013 726 JNC PutChar_elseif2
727 ; {
728 ; a = 16 * ( c - 'A' );
0592 EF 729 MOV A, R7
0593 C3 730 CLR C
0594 9441 731 SUBB A, #'A'
0596 75F010 732 MOV B, #16
0599 A4 733 MUL AB
059A AAF0 734 MOV R2, B
059C FB 735 MOV R3, A
736 ; Tab = UpperTab;
059D 751800 737 MOV 0x18, #HIGH(UpperTab)
05A0 75191E 738 MOV 0x19, #LOW(UpperTab)
739 ; }
05A3 801A 740 SJMP PutChar_endif
741 ; else if ( islower(c) ) //如果c是小寫字母
05A5 742 PutChar_elseif2:
05A5 120552 743 LCALL islower
05A8 5013 744 JNC PutChar_else
745 ; {
746 ; a = 16 * ( c - 'a' );
05AA EF 747 MOV A, R7
05AB C3 748 CLR C
05AC 9461 749 SUBB A, #'a'
05AE 75F010 750 MOV B, #16
05B1 A4 751 MUL AB
05B2 AAF0 752 MOV R2, B
05B4 FB 753 MOV R3, A
754 ; Tab = LowerTab;
05B5 751801 755 MOV 0x18, #HIGH(LowerTab)
05B8 7519BE 756 MOV 0x19, #LOW(LowerTab)
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 17
757 ; }
05BB 8002 758 SJMP PutChar_endif
759 ; else //如果是其它字符
05BD 760 PutChar_else:
761 ; {
762 ; return;
05BD 8040 763 SJMP PutChar_end
764 ; }
05BF 765 PutChar_endif:
766 ; for ( j=0; j<t; j++ )
05BF 7D00 767 MOV R5, #0
05C1 768 PutChar_for1:
769 ; {
770 ; for ( i=0; i<15; i++ )
05C1 7C00 771 MOV R4, #0
05C3 772 PutChar_for2:
773 ; {
774 ; DispBuf[i] = DispBuf[i+1];
05C3 7430 775 MOV A, #DispBuf
05C5 2C 776 ADD A, R4
05C6 F8 777 MOV R0, A
05C7 04 778 INC A
05C8 F9 779 MOV R1, A
05C9 E7 780 MOV A, @R1
05CA F6 781 MOV @R0, A
782 ; DispBuf[16+i] = DispBuf[17+i];
05CB E8 783 MOV A, R0
05CC 2410 784 ADD A, #16
05CE F8 785 MOV R0, A
05CF 04 786 INC A
05D0 F9 787 MOV R1, A
05D1 E7 788 MOV A, @R1
05D2 F6 789 MOV @R0, A
790 ; }
05D3 0C 791 INC R4
05D4 BC0FEC 792 CJNE R4, #15, PutChar_for2
793 ; DispBuf[i] = Tab[a+j];
05D7 7430 794 MOV A, #DispBuf
05D9 2C 795 ADD A, R4
05DA F8 796 MOV R0, A
05DB E519 797 MOV A, 0x19
05DD 2B 798 ADD A, R3
05DE F582 799 MOV DPL, A
05E0 E518 800 MOV A, 0x18
05E2 3A 801 ADDC A, R2
05E3 F583 802 MOV DPH, A
05E5 ED 803 MOV A, R5
05E6 93 804 MOVC A, @A+DPTR
05E7 F6 805 MOV @R0, A
806 ; DispBuf[16+i] = Tab[a+j+t];
05E8 E8 807 MOV A, R0
05E9 2410 808 ADD A, #16
05EB F8 809 MOV R0, A
05EC ED 810 MOV A, R5
05ED 2E 811 ADD A, R6
05EE 93 812 MOVC A, @A+DPTR
05EF F6 813 MOV @R0, A
814 ; Delay(SCROLL_SPEED);
05F0 C007 815 PUSH 0x07
05F2 7F0F 816 MOV R7, #SCROLL_SPEED
05F4 120530 817 LCALL Delay
05F7 D007 818 POP 0x07
819 ; }
05F9 0D 820 INC R5
821 BLO R5, R6, PutChar_for1
05FF 826 PutChar_end:
A51 MACRO ASSEMBLER MAIN 07/01/2006 11:23:03 PAGE 18
05FF D019 827 POP 0x19
0601 D018 828 POP 0x18
0603 D006 829 POP 0x06
0605 D005 830 POP 0x05
0607 D004 831 POP 0x04
0609 D003 832 POP 0x03
060B D002 833 POP 0x02
060D 22 834 RET
835
836
837 ;*************************************************************************
838 ;函數:PutStr()
839 ;功能:滾動顯示一個文字串
840 ;參數:
841 ; *str:以'\0'結尾的文字串
842 ; *str可以同時包含字母和漢字,其中漢字必須是小漢字庫內的漢字
843 ;*************************************************************************
844 ; void PutStr(unsigned char code *str)
845 ; *str = (R6,R7)
060E 846 PutStr:
060E C002 847 PUSH 0x02
0610 C003 848 PUSH 0x03
0612 EE
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -