📄 si4421.ls1
字号:
821 ; END OF fiforxframe
822
823 ; /******************************************************************************
824 ; ** 函数: txregframe()
825 ; ** 入参:
826 ; ** 返回:
827 ; ** 说明: ia442x发送一帧数据
828 ; ******************************************************************************/
829 ; void txregframe(unsigned char len)
830
---- 831 RSEG ?PR?_txregframe?SI4421
0000 832 _txregframe:
833 USING 0
834 ; SOURCE LINE # 166
0000 900000 F 835 MOV DPTR,#len?343
0003 EF 836 MOV A,R7
0004 F0 837 MOVX @DPTR,A
838 ; {
839 ; SOURCE LINE # 167
840 ; unsigned char i;
841 ; unsigned int u,k;
842 ; //P2 = 0xFF;
843 ; sdi = 0;
844 ; SOURCE LINE # 171
0005 C286 845 CLR sdi
846 ; nsel = 0;
847 ; SOURCE LINE # 172
0007 C290 848 CLR nsel
849 ; // spisendcommand(0xca83);
850 ; spisendcommand(0x8228);//transimission starts turn on crystal
851 ; SOURCE LINE # 174
0009 7F28 852 MOV R7,#028H
000B 7E82 853 MOV R6,#082H
000D 120000 F 854 LCALL _spisendcommand
855 ; // sdi = 0;
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 15
856 ; // nsel = 0;
857 ;
858 ; len=len+4; //字节固定同步头
859 ; SOURCE LINE # 178
0010 900000 F 860 MOV DPTR,#len?343
0013 E0 861 MOVX A,@DPTR
0014 2404 862 ADD A,#04H
0016 F0 863 MOVX @DPTR,A
864 ;
865 ; for(i=0;i<len;i++)
866 ; SOURCE LINE # 180
0017 E4 867 CLR A
0018 A3 868 INC DPTR
0019 F0 869 MOVX @DPTR,A
001A 870 ?C0027:
001A 900000 F 871 MOV DPTR,#len?343
001D E0 872 MOVX A,@DPTR
001E FF 873 MOV R7,A
001F A3 874 INC DPTR
0020 E0 875 MOVX A,@DPTR
0021 C3 876 CLR C
0022 9F 877 SUBB A,R7
0023 4003 878 JC $ + 5H
0025 020000 F 879 LJMP ?C0028
880 ; {
881 ; SOURCE LINE # 181
882 ; nsel=0;
883 ; SOURCE LINE # 182
0028 C290 884 CLR nsel
885 ; //while(!sdo);
886 ;
887 ; for(k=0;k<6000;k++)
888 ; SOURCE LINE # 185
002A E4 889 CLR A
002B 900000 F 890 MOV DPTR,#k?346
002E F0 891 MOVX @DPTR,A
002F A3 892 INC DPTR
0030 F0 893 MOVX @DPTR,A
0031 894 ?C0030:
0031 900000 F 895 MOV DPTR,#k?346
0034 E0 896 MOVX A,@DPTR
0035 FE 897 MOV R6,A
0036 A3 898 INC DPTR
0037 E0 899 MOVX A,@DPTR
0038 FF 900 MOV R7,A
0039 C3 901 CLR C
003A 9470 902 SUBB A,#070H
003C EE 903 MOV A,R6
003D 9417 904 SUBB A,#017H
003F 5013 905 JNC ?C0031
906 ; {
907 ; SOURCE LINE # 186
908 ; if(sdo)
909 ; SOURCE LINE # 187
0041 208110 910 JB sdo,?C0031
911 ; {
912 ; SOURCE LINE # 188
913 ; break;
914 ; SOURCE LINE # 189
915 ; }
916 ; SOURCE LINE # 190
917 ; }
918 ; SOURCE LINE # 191
0044 919 ?C0032:
0044 900000 F 920 MOV DPTR,#k?346+01H
0047 E0 921 MOVX A,@DPTR
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 16
0048 04 922 INC A
0049 F0 923 MOVX @DPTR,A
004A 70E5 924 JNZ ?C0030
004C 900000 F 925 MOV DPTR,#k?346
004F E0 926 MOVX A,@DPTR
0050 04 927 INC A
0051 F0 928 MOVX @DPTR,A
0052 929 ?C0062:
0052 80DD 930 SJMP ?C0030
0054 931 ?C0031:
932 ; if(k==6000)
933 ; SOURCE LINE # 192
0054 BE171C 934 CJNE R6,#017H,?C0034
0057 BF7019 935 CJNE R7,#070H,?C0034
936 ; { // nres=0;
937 ; SOURCE LINE # 193
938 ; // delayms(50);
939 ; // nres=1;
940 ; ia442xinit();
941 ; SOURCE LINE # 196
005A 120000 F 942 LCALL ia442xinit
943 ; spirevtwobyte();
944 ; SOURCE LINE # 197
005D 120000 F 945 LCALL spirevtwobyte
946 ; spisendcommand(0x8288); //电源管理 whole receive crysta
l on
947 ; SOURCE LINE # 198
0060 120000 F 948 LCALL L?0069
949 ; spisendcommand(0xca83); //FIFO COMMAND
950 ; SOURCE LINE # 199
0063 7F83 951 MOV R7,#083H
0065 7ECA 952 MOV R6,#0CAH
0067 120000 F 953 LCALL _spisendcommand
954 ; if(DEBUG) Printf_String("\r\n[msg:]003 si4421's sdo is dead but s
he can receive");
955 ; SOURCE LINE # 200
006A 7BFF 956 MOV R3,#0FFH
006C 7A00 F 957 MOV R2,#HIGH (?SC_106)
006E 7900 F 958 MOV R1,#LOW (?SC_106)
0070 020000 F 959 LJMP ?C0067
960 ; return;
961 ; }
962 ; SOURCE LINE # 202
0073 963 ?C0034:
964 ;
965 ;
966 ; u=0xb8;
967 ; SOURCE LINE # 205
0073 900000 F 968 MOV DPTR,#u?345
0076 E4 969 CLR A
0077 F0 970 MOVX @DPTR,A
0078 A3 971 INC DPTR
0079 74B8 972 MOV A,#0B8H
007B F0 973 MOVX @DPTR,A
974 ; u<<=8;
975 ; SOURCE LINE # 206
007C E0 976 MOVX A,@DPTR
007D F8 977 MOV R0,A
007E E4 978 CLR A
007F F0 979 MOVX @DPTR,A
0080 E8 980 MOV A,R0
0081 900000 F 981 MOV DPTR,#u?345
0084 F0 982 MOVX @DPTR,A
983 ; u+=txdata[i];
984 ; SOURCE LINE # 207
0085 900000 F 985 MOV DPTR,#i?344
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 17
0088 E0 986 MOVX A,@DPTR
0089 2400 F 987 ADD A,#LOW (txdata)
008B F582 988 MOV DPL,A
008D E4 989 CLR A
008E 3400 F 990 ADDC A,#HIGH (txdata)
0090 F583 991 MOV DPH,A
0092 E0 992 MOVX A,@DPTR
0093 FF 993 MOV R7,A
0094 900000 F 994 MOV DPTR,#u?345+01H
0097 E0 995 MOVX A,@DPTR
0098 2F 996 ADD A,R7
0099 F0 997 MOVX @DPTR,A
009A 900000 F 998 MOV DPTR,#u?345
009D E0 999 MOVX A,@DPTR
009E 3400 1000 ADDC A,#00H
00A0 F0 1001 MOVX @DPTR,A
1002 ; spisendcommand(u);
1003 ; SOURCE LINE # 208
00A1 E0 1004 MOVX A,@DPTR
00A2 FE 1005 MOV R6,A
00A3 A3 1006 INC DPTR
00A4 E0 1007 MOVX A,@DPTR
00A5 FF 1008 MOV R7,A
00A6 120000 F 1009 LCALL _spisendcommand
1010 ; }
1011 ; SOURCE LINE # 209
00A9 900000 F 1012 MOV DPTR,#i?344
00AC E0 1013 MOVX A,@DPTR
00AD 04 1014 INC A
00AE F0 1015 MOVX @DPTR,A
00AF 020000 F 1016 LJMP ?C0027
00B2 1017 ?C0028:
1018 ; nsel=0;
1019 ; SOURCE LINE # 210
00B2 C290 1020 CLR nsel
1021 ; //while(!sdo);
1022 ; for(k=0;k<6000;k++)
1023 ; SOURCE LINE # 212
00B4 E4 1024 CLR A
00B5 900000 F 1025 MOV DPTR,#k?346
00B8 F0 1026 MOVX @DPTR,A
00B9 A3 1027 INC DPTR
00BA F0 1028 MOVX @DPTR,A
00BB 1029 ?C0037:
00BB 900000 F 1030 MOV DPTR,#k?346
00BE E0 1031 MOVX A,@DPTR
00BF FE 1032 MOV R6,A
00C0 A3 1033 INC DPTR
00C1 E0 1034 MOVX A,@DPTR
00C2 FF 1035 MOV R7,A
00C3 C3 1036 CLR C
00C4 9470 1037 SUBB A,#070H
00C6 EE 1038 MOV A,R6
00C7 9417 1039 SUBB A,#017H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -