spimgr.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,091 行 · 第 1/4 页
LST
1,091 行
203 switch (state)
204 {
205 case SOP_STATE:
206 if (ch == SOP_VALUE)
207 state = CMD_STATE1;
208 break;
209
210 case CMD_STATE1:
211 CMD_Token[0] = ch;
\ ??SPIMgr_ProcessZToolData_2:
\ 00001E 85..82 MOV DPL,?XSP + 0
\ 000021 85..83 MOV DPH,?XSP + 1
\ 000024 E0 MOVX A,@DPTR
\ 000025 90.... MOV DPTR,#CMD_Token
\ 000028 F0 MOVX @DPTR,A
212 state = CMD_STATE2;
\ 000029 7402 MOV A,#0x2
\ ??SPIMgr_ProcessZToolData_3:
\ 00002B 90.... MOV DPTR,#state
\ ??SPIMgr_ProcessZToolData_4:
\ 00002E F0 MOVX @DPTR,A
\ ??SPIMgr_ProcessZToolData_1:
\ 00002F ; Setup parameters for call to function Hal_UART_RxBufLen
\ 00002F 7900 MOV R1,#0x0
\ 000031 90.... MOV DPTR,#(Hal_UART_RxBufLen & 0xffff)
\ 000034 74.. MOV A,#((Hal_UART_RxBufLen >> 16) & 0xff)
\ 000036 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000039 EA MOV A,R2
\ 00003A 7001 JNZ ??SPIMgr_ProcessZToolData_5
\ 00003C EB MOV A,R3
\ ??SPIMgr_ProcessZToolData_5:
\ 00003D 60D5 JZ ??SPIMgr_ProcessZToolData_0
\ 00003F ; Setup parameters for call to function HalUARTRead
\ 00003F 7C01 MOV R4,#0x1
\ 000041 7D00 MOV R5,#0x0
\ 000043 85..82 MOV DPL,?XSP + 0
\ 000046 85..83 MOV DPH,?XSP + 1
\ 000049 AA82 MOV R2,DPL
\ 00004B AB83 MOV R3,DPH
\ 00004D 7900 MOV R1,#0x0
\ 00004F 90.... MOV DPTR,#(HalUARTRead & 0xffff)
\ 000052 74.. MOV A,#((HalUARTRead >> 16) & 0xff)
\ 000054 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000057 90.... MOV DPTR,#state
\ 00005A E0 MOVX A,@DPTR
\ 00005B 12.... LCALL ?UC_SWITCH_DENSE
\ `?<Jumptable for SPIMgr_ProcessZToolData>_0`:
\ 00005E 00 DB 0
\ 00005F 05 DB 5
\ 000060 .... DW ??SPIMgr_ProcessZToolData_1
\ 000062 .... DW ??SPIMgr_ProcessZToolData_6
\ 000064 .... DW ??SPIMgr_ProcessZToolData_2
\ 000066 .... DW ??SPIMgr_ProcessZToolData_7
\ 000068 .... DW ??SPIMgr_ProcessZToolData_8
\ 00006A .... DW ??SPIMgr_ProcessZToolData_9
\ 00006C .... DW ??SPIMgr_ProcessZToolData_10
\ ??SPIMgr_ProcessZToolData_6:
\ 00006E 85..82 MOV DPL,?XSP + 0
\ 000071 85..83 MOV DPH,?XSP + 1
\ 000074 E0 MOVX A,@DPTR
\ 000075 6402 XRL A,#0x2
\ 000077 70B6 JNZ ??SPIMgr_ProcessZToolData_1
\ 000079 7401 MOV A,#0x1
\ 00007B 80AE SJMP ??SPIMgr_ProcessZToolData_3
213 break;
214
215 case CMD_STATE2:
216 CMD_Token[1] = ch;
\ ??SPIMgr_ProcessZToolData_7:
\ 00007D 85..82 MOV DPL,?XSP + 0
\ 000080 85..83 MOV DPH,?XSP + 1
\ 000083 E0 MOVX A,@DPTR
\ 000084 90.... MOV DPTR,#(CMD_Token + 1)
\ 000087 F0 MOVX @DPTR,A
217 state = LEN_STATE;
\ 000088 7403 MOV A,#0x3
\ 00008A 809F SJMP ??SPIMgr_ProcessZToolData_3
218 break;
219
220 case LEN_STATE:
221 LEN_Token = ch;
\ ??SPIMgr_ProcessZToolData_8:
\ 00008C 85..82 MOV DPL,?XSP + 0
\ 00008F 85..83 MOV DPH,?XSP + 1
\ 000092 E0 MOVX A,@DPTR
\ 000093 90.... MOV DPTR,#LEN_Token
\ 000096 F0 MOVX @DPTR,A
222 if (ch == 0)
\ 000097 7004 JNZ ??SPIMgr_ProcessZToolData_11
223 state = FCS_STATE;
\ 000099 7405 MOV A,#0x5
\ 00009B 8002 SJMP ??SPIMgr_ProcessZToolData_12
224 else
225 state = DATA_STATE;
\ ??SPIMgr_ProcessZToolData_11:
\ 00009D 7404 MOV A,#0x4
\ ??SPIMgr_ProcessZToolData_12:
\ 00009F 90.... MOV DPTR,#state
\ 0000A2 F0 MOVX @DPTR,A
226
227 tempDataLen = 0;
\ 0000A3 E4 CLR A
\ 0000A4 90.... MOV DPTR,#tempDataLen
\ 0000A7 F0 MOVX @DPTR,A
228
229 /* Allocate memory for the data */
230 SPI_Msg = (mtOSALSerialData_t *)osal_msg_allocate( sizeof ( mtOSALSerialData_t ) + 2+1+LEN_Token );
\ 0000A8 ; Setup parameters for call to function osal_msg_allocate
\ 0000A8 90.... MOV DPTR,#LEN_Token
\ 0000AB E0 MOVX A,@DPTR
\ 0000AC F8 MOV R0,A
\ 0000AD 7407 MOV A,#0x7
\ 0000AF 28 ADD A,R0
\ 0000B0 FA MOV R2,A
\ 0000B1 E4 CLR A
\ 0000B2 3400 ADDC A,#0x0
\ 0000B4 FB MOV R3,A
\ 0000B5 90.... MOV DPTR,#(osal_msg_allocate & 0xffff)
\ 0000B8 74.. MOV A,#((osal_msg_allocate >> 16) & 0xff)
\ 0000BA 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 0000BD 90.... MOV DPTR,#SPI_Msg
\ 0000C0 EA MOV A,R2
\ 0000C1 F0 MOVX @DPTR,A
\ 0000C2 A3 INC DPTR
\ 0000C3 EB MOV A,R3
\ 0000C4 F0 MOVX @DPTR,A
231
232 if (SPI_Msg)
\ 0000C5 90.... MOV DPTR,#SPI_Msg
\ 0000C8 E0 MOVX A,@DPTR
\ 0000C9 7002 JNZ ??SPIMgr_ProcessZToolData_13
\ 0000CB A3 INC DPTR
\ 0000CC E0 MOVX A,@DPTR
\ ??SPIMgr_ProcessZToolData_13:
\ 0000CD 6044 JZ ??SPIMgr_ProcessZToolData_14
233 {
234 /* Fill up what we can */
235 SPI_Msg->hdr.event = CMD_SERIAL_MSG;
\ 0000CF 12.... LCALL ?Subroutine4 & 0xFFFF
\ ??CrossCallReturnLabel_8:
\ 0000D2 7401 MOV A,#0x1
\ 0000D4 F0 MOVX @DPTR,A
236 SPI_Msg->msg = (uint8*)(SPI_Msg+1);
\ 0000D5 90.... MOV DPTR,#SPI_Msg
\ 0000D8 E0 MOVX A,@DPTR
\ 0000D9 2404 ADD A,#0x4
\ 0000DB F8 MOV R0,A
\ 0000DC A3 INC DPTR
\ 0000DD E0 MOVX A,@DPTR
\ 0000DE 3400 ADDC A,#0x0
\ 0000E0 F9 MOV R1,A
\ 0000E1 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_4:
\ 0000E4 E8 MOV A,R0
\ 0000E5 F0 MOVX @DPTR,A
\ 0000E6 A3 INC DPTR
\ 0000E7 E9 MOV A,R1
\ 0000E8 F0 MOVX @DPTR,A
237 SPI_Msg->msg[0] = CMD_Token[0];
\ 0000E9 90.... MOV DPTR,#CMD_Token
\ 0000EC E0 MOVX A,@DPTR
\ 0000ED C0E0 PUSH A
\ 0000EF 12.... LCALL ?Subroutine1 & 0xFFFF
\ ??CrossCallReturnLabel_2:
\ 0000F2 12.... LCALL ??Subroutine4_0 & 0xFFFF
\ ??CrossCallReturnLabel_9:
\ 0000F5 D0E0 POP A
\ 0000F7 F0 MOVX @DPTR,A
238 SPI_Msg->msg[1] = CMD_Token[1];
\ 0000F8 90.... MOV DPTR,#(CMD_Token + 1)
\ 0000FB E0 MOVX A,@DPTR
\ 0000FC C0E0 PUSH A
\ 0000FE 12.... LCALL ?Subroutine0 & 0xFFFF
\ ??CrossCallReturnLabel_0:
\ 000101 D0E0 POP A
\ 000103 F0 MOVX @DPTR,A
239 SPI_Msg->msg[2] = LEN_Token;
\ 000104 90.... MOV DPTR,#LEN_Token
\ 000107 E0 MOVX A,@DPTR
\ 000108 C0E0 PUSH A
\ 00010A 12.... LCALL ?Subroutine0 & 0xFFFF
\ ??CrossCallReturnLabel_1:
\ 00010D A3 INC DPTR
\ 00010E D0E0 POP A
\ 000110 02.... LJMP ??SPIMgr_ProcessZToolData_4 & 0xFFFF
240 }
241 else
242 {
243 state = SOP_STATE;
\ ??SPIMgr_ProcessZToolData_14:
\ 000113 E4 CLR A
\ 000114 90.... MOV DPTR,#state
\ 000117 F0 MOVX @DPTR,A
244 return;
\ 000118 02.... LJMP ??SPIMgr_ProcessZToolData_0 & 0xFFFF
245 }
246
247 break;
248
249 case DATA_STATE:
250 SPI_Msg->msg[3 + tempDataLen++] = ch;
\ ??SPIMgr_ProcessZToolData_9:
\ 00011B 85..82 MOV DPL,?XSP + 0
\ 00011E 85..83 MOV DPH,?XSP + 1
\ 000121 E0 MOVX A,@DPTR
\ 000122 C0E0 PUSH A
\ 000124 90.... MOV DPTR,#tempDataLen
\ 000127 E0 MOVX A,@DPTR
\ 000128 F8 MOV R0,A
\ 000129 12.... LCALL ?Subroutine2 & 0xFFFF
\ ??CrossCallReturnLabel_5:
\ 00012C E0 MOVX A,@DPTR
\ 00012D 28 ADD A,R0
\ 00012E FA MOV R2,A
\ 00012F A3 INC DPTR
\ 000130 E0 MOVX A,@DPTR
\ 000131 3400 ADDC A,#0x0
\ 000133 8A82 MOV DPL,R2
\ 000135 F583 MOV DPH,A
\ 000137 A3 INC DPTR
\ 000138 A3 INC DPTR
\ 000139 A3 INC DPTR
\ 00013A D0E0 POP A
\ 00013C F0 MOVX @DPTR,A
\ 00013D 90.... MOV DPTR,#tempDataLen
\ 000140 E0 MOVX A,@DPTR
\ 000141 04 INC A
\ 000142 F0 MOVX @DPTR,A
251 if ( tempDataLen == LEN_Token )
\ 000143 FA MOV R2,A
\ 000144 90.... MOV DPTR,#LEN_Token
\ 000147 E0 MOVX A,@DPTR
\ 000148 6A XRL A,R2
\ 000149 6003 JZ $+5
\ 00014B 02.... LJMP ??SPIMgr_ProcessZToolData_1 & 0xFFFF
252 state = FCS_STATE;
\ 00014E 7405 MOV A,#0x5
\ 000150 02.... LJMP ??SPIMgr_ProcessZToolData_3 & 0xFFFF
253 break;
254
255 case FCS_STATE:
256
257 FSC_Token = ch;
\ ??SPIMgr_ProcessZToolData_10:
\ 000153 85..82 MOV DPL,?XSP + 0
\ 000156 85..83 MOV DPH,?XSP + 1
\ 000159 E0 MOVX A,@DPTR
\ 00015A 90.... MOV DPTR,#FSC_Token
\ 00015D F0 MOVX @DPTR,A
258
259 /* Make sure it's correct */
260 if ((SPIMgr_CalcFCS ((uint8*)&SPI_Msg->msg[0], 2 + 1 + LEN_Token) == FSC_Token))
\ 00015E ; Setup parameters for call to function SPIMgr_CalcFCS
\ 00015E 90.... MOV DPTR,#LEN_Token
\ 000161 E0 MOVX A,@DPTR
\ 000162 2403 ADD A,#0x3
\ 000164 F9 MOV R1,A
\ 000165 12.... LCALL ?Subroutine1 & 0xFFFF
\ ??CrossCallReturnLabel_3:
\ 000168 FA MOV R2,A
\ 000169 A3 INC DPTR
\ 00016A E0 MOVX A,@DPTR
\ 00016B FB MOV R3,A
\ 00016C 90.... MOV DPTR,#(SPIMgr_CalcFCS & 0xffff)
\ 00016F 74.. MOV A,#((SPIMgr_CalcFCS >> 16) & 0xff)
\ 000171 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000174 E9 MOV A,R1
\ 000175 FA MOV R2,A
\ 000176 90.... MOV DPTR,#FSC_Token
\ 000179 E0 MOVX A,@DPTR
\ 00017A 6A XRL A,R2
\ 00017B 90.... MOV DPTR,#SPI_Msg
\ 00017E 7011 JNZ ??SPIMgr_ProcessZToolData_15
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?