📄 uart.ls1
字号:
685 ; SOURCE LINE # 169
003A 686 ?C0017:
003A 22 687 RET
688 ; END OF _PutOutputData
689
690 ;
691 ; void ComOpen(unsigned long clk, unsigned long baudrate)
692
---- 693 RSEG ?PR?_ComOpen?UART
0000 694 _ComOpen:
695 USING 0
696 ; SOURCE LINE # 171
0000 900000 F 697 MOV DPTR,#clk?542
0003 120000 F 698 LCALL ?C?LSTXDATA
699 ; {
700 ; SOURCE LINE # 172
701 ; unsigned char tmp;
702 ;
703 ; if(baudrate >= 9000)
704 ; SOURCE LINE # 175
0006 E4 705 CLR A
0007 7F28 706 MOV R7,#028H
0009 7E23 707 MOV R6,#023H
000B FD 708 MOV R5,A
000C FC 709 MOV R4,A
000D 900000 F 710 MOV DPTR,#baudrate?543
0010 E0 711 MOVX A,@DPTR
0011 F8 712 MOV R0,A
0012 A3 713 INC DPTR
0013 E0 714 MOVX A,@DPTR
0014 F9 715 MOV R1,A
0015 A3 716 INC DPTR
0016 E0 717 MOVX A,@DPTR
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 12
0017 FA 718 MOV R2,A
0018 A3 719 INC DPTR
0019 E0 720 MOVX A,@DPTR
001A FB 721 MOV R3,A
001B C3 722 CLR C
001C 120000 F 723 LCALL ?C?ULCMP
001F 4015 724 JC ?C0021
725 ; {
726 ; SOURCE LINE # 176
727 ; PCON |= SMOD_;
728 ; SOURCE LINE # 177
0021 438780 729 ORL PCON,#080H
730 ; tmp = (clk >> 4) / baudrate;
731 ; SOURCE LINE # 178
0024 900000 F 732 MOV DPTR,#clk?542
0027 E0 733 MOVX A,@DPTR
0028 FC 734 MOV R4,A
0029 A3 735 INC DPTR
002A E0 736 MOVX A,@DPTR
002B FD 737 MOV R5,A
002C A3 738 INC DPTR
002D E0 739 MOVX A,@DPTR
002E FE 740 MOV R6,A
002F A3 741 INC DPTR
0030 E0 742 MOVX A,@DPTR
0031 FF 743 MOV R7,A
0032 7804 744 MOV R0,#04H
745 ; }
746 ; SOURCE LINE # 179
0034 8013 747 SJMP ?C0052
0036 748 ?C0021:
749 ; else
750 ; {
751 ; SOURCE LINE # 181
752 ; PCON &= ~SMOD_;
753 ; SOURCE LINE # 182
0036 53877F 754 ANL PCON,#07FH
755 ; tmp = (clk >> 5) / baudrate;
756 ; SOURCE LINE # 183
0039 900000 F 757 MOV DPTR,#clk?542
003C E0 758 MOVX A,@DPTR
003D FC 759 MOV R4,A
003E A3 760 INC DPTR
003F E0 761 MOVX A,@DPTR
0040 FD 762 MOV R5,A
0041 A3 763 INC DPTR
0042 E0 764 MOVX A,@DPTR
0043 FE 765 MOV R6,A
0044 A3 766 INC DPTR
0045 E0 767 MOVX A,@DPTR
0046 FF 768 MOV R7,A
0047 7805 769 MOV R0,#05H
0049 770 ?C0052:
0049 120000 F 771 LCALL ?C?ULSHR
004C A3 772 INC DPTR
004D E0 773 MOVX A,@DPTR
004E F8 774 MOV R0,A
004F A3 775 INC DPTR
0050 E0 776 MOVX A,@DPTR
0051 F9 777 MOV R1,A
0052 A3 778 INC DPTR
0053 E0 779 MOVX A,@DPTR
0054 FA 780 MOV R2,A
0055 A3 781 INC DPTR
0056 E0 782 MOVX A,@DPTR
0057 FB 783 MOV R3,A
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 13
0058 120000 F 784 LCALL ?C?ULDIV
005B 900000 F 785 MOV DPTR,#tmp?544
005E EF 786 MOV A,R7
005F F0 787 MOVX @DPTR,A
788 ; }
789 ; SOURCE LINE # 184
0060 790 ?C0022:
791 ;
792 ; SetIntPri(SIO_VECTOR, 1);
793 ; SOURCE LINE # 186
0060 7D01 794 MOV R5,#01H
0062 7F04 795 MOV R7,#04H
0064 120000 F 796 LCALL _SetIntPri
797 ;
798 ; TI = RI = 0;
799 ; SOURCE LINE # 188
0067 C298 800 CLR RI
0069 C299 801 CLR TI
802 ; SCON = 0x50;
803 ; SOURCE LINE # 189
006B 759850 804 MOV SCON,#050H
805 ; TMOD &= 0x0F;
806 ; SOURCE LINE # 190
006E 53890F 807 ANL TMOD,#0FH
808 ; TMOD |= 0x20;
809 ; SOURCE LINE # 191
0071 438920 810 ORL TMOD,#020H
811 ; TR1 = 1;
812 ; SOURCE LINE # 192
0074 D28E 813 SETB TR1
814 ; TH1 = 256 - tmp;
815 ; SOURCE LINE # 193
0076 900000 F 816 MOV DPTR,#tmp?544
0079 E0 817 MOVX A,@DPTR
007A F4 818 CPL A
007B 04 819 INC A
007C F58D 820 MOV TH1,A
821 ; enable();
822 ; SOURCE LINE # 194
007E D2AF 823 SETB EA
824 ; ES=1;
825 ; SOURCE LINE # 195
0080 D2AC 826 SETB ES
827 ; }
828 ; SOURCE LINE # 196
0082 22 829 RET
830 ; END OF _ComOpen
831
832 ;
833 ; unsigned int ComWrite( unsigned char *buf, unsigned int len )
834
---- 835 RSEG ?PR?_ComWrite?UART
0000 836 _ComWrite:
837 USING 0
838 ; SOURCE LINE # 198
0000 900000 F 839 MOV DPTR,#buf?645
0003 EB 840 MOV A,R3
0004 F0 841 MOVX @DPTR,A
0005 A3 842 INC DPTR
0006 EA 843 MOV A,R2
0007 F0 844 MOVX @DPTR,A
0008 A3 845 INC DPTR
0009 E9 846 MOV A,R1
000A F0 847 MOVX @DPTR,A
000B A3 848 INC DPTR
000C EC 849 MOV A,R4
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 14
000D F0 850 MOVX @DPTR,A
000E A3 851 INC DPTR
000F ED 852 MOV A,R5
0010 F0 853 MOVX @DPTR,A
854 ; {
855 ; SOURCE LINE # 199
856 ; unsigned int i;
857 ; unsigned int starttime;
858 ;
859 ; for(i=0; i<len; i++)
860 ; SOURCE LINE # 203
0011 E4 861 CLR A
0012 A3 862 INC DPTR
0013 F0 863 MOVX @DPTR,A
0014 A3 864 INC DPTR
0015 F0 865 MOVX @DPTR,A
0016 866 ?C0024:
0016 900000 F 867 MOV DPTR,#len?646
0019 E0 868 MOVX A,@DPTR
001A FE 869 MOV R6,A
001B A3 870 INC DPTR
001C E0 871 MOVX A,@DPTR
001D FF 872 MOV R7,A
001E C3 873 CLR C
001F 900000 F 874 MOV DPTR,#i?647+01H
0022 E0 875 MOVX A,@DPTR
0023 9F 876 SUBB A,R7
0024 900000 F 877 MOV DPTR,#i?647
0027 E0 878 MOVX A,@DPTR
0028 9E 879 SUBB A,R6
0029 5065 880 JNC ?C0025
881 ; {
882 ; SOURCE LINE # 204
883 ; starttime = GetTickCount();
884 ; SOURCE LINE # 205
002B 120000 F 885 LCALL GetTickCount
002E 900000 F 886 MOV DPTR,#starttime?648
0031 EE 887 MOV A,R6
0032 F0 888 MOVX @DPTR,A
0033 A3 889 INC DPTR
0034 EF 890 MOV A,R7
0035 F0 891 MOVX @DPTR,A
0036 892 ?C0027:
893 ; while( !PutOutputData(buf[i]) )
894 ; SOURCE LINE # 206
0036 900000 F 895 MOV DPTR,#buf?645
0039 E0 896 MOVX A,@DPTR
003A FB 897 MOV R3,A
003B A3 898 INC DPTR
003C E0 899 MOVX A,@DPTR
003D FA 900 MOV R2,A
003E A3 901 INC DPTR
003F E0 902 MOVX A,@DPTR
0040 F9 903 MOV R1,A
0041 900000 F 904 MOV DPTR,#i?647
0044 E0 905 MOVX A,@DPTR
0045 FE 906 MOV R6,A
0046 A3 907 INC DPTR
0047 E0 908 MOVX A,@DPTR
0048 F582 909 MOV DPL,A
004A 8E83 910 MOV DPH,R6
004C 120000 F 911 LCALL ?C?CLDOPTR
004F FF 912 MOV R7,A
0050 120000 F 913 LCALL _PutOutputData
0053 402B 914 JC ?C0026
915 ; {
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -