📄 mtel.s51
字号:
// 295
// 296 msgPtr = msg;
MOV ?V0 + 4,R6
MOV ?V0 + 5,R7
// 297
// 298 *msg++ = (byte)(HI_UINT16( cmd ));
MOV A,R3
MOVX @DPTR,A
INC DPTR
// 299 *msg++ = (byte)(LO_UINT16( cmd ));
MOV A,R2
MOVX @DPTR,A
INC DPTR
INC R6
INC R6
MOV R7,DPH
// 300
// 301 if ( pData )
MOV A,?V0 + 0
JNZ ??MT_BuildSPIMsg_0
MOV A,?V0 + 1
??MT_BuildSPIMsg_0:
JZ ??MT_BuildSPIMsg_1
// 302 {
// 303 *msg++ = dataLen;
MOV A,R1
MOVX @DPTR,A
// 304
// 305 msg = osal_memcpy( msg, pData, dataLen );
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 17)
MOV A,R1
MOV R4,A
MOV R5,#0x0
MOV DPL,R6
MOV DPH,R7
INC DPTR
MOV R2,DPL
MOV R3,DPH
MOV DPTR,#(osal_memcpy & 0xffff)
MOV A,#((osal_memcpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x3
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 14)
MOV ?V0 + 0,R2
MOV ?V0 + 1,R3
MOV R6,?V0 + 0
MOV R7,?V0 + 1
SJMP ??MT_BuildSPIMsg_2
// 306 }
// 307 else
// 308 *msg++ = 0;
??MT_BuildSPIMsg_1:
CLR A
MOVX @DPTR,A
INC DPTR
INC R6
MOV R7,DPH
// 309
// 310 *msg = SPIMgr_CalcFCS( msgPtr, (byte)(3 + dataLen) );
??MT_BuildSPIMsg_2:
; Setup parameters for call to function SPIMgr_CalcFCS
MOV A,#0x3
ADD A,?V0 + 3
MOV R1,A
MOV R2,?V0 + 4
MOV R3,?V0 + 5
MOV DPTR,#(SPIMgr_CalcFCS & 0xffff)
MOV A,#((SPIMgr_CalcFCS >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,R1
MOV DPL,R6
MOV DPH,R7
MOVX @DPTR,A
// 311 }
LJMP ??Subroutine18_1 & 0xFFFF
CFI EndBlock cfiBlock3
// 312 #endif
// 313
// 314 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
// 315 /*********************************************************************
// 316 * @fn MT_BuildAndSendZToolResponse
// 317 *
// 318 * @brief
// 319 *
// 320 * Build and send a ZTOOL msg
// 321 *
// 322 * @param byte err
// 323 *
// 324 * @return void
// 325 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 326 void MT_BuildAndSendZToolResponse( byte msgLen, uint16 cmd,
MT_BuildAndSendZToolResponse:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function MT_BuildAndSendZToolResponse
// 327 byte dataLen, byte *pData )
// 328 {
FUNCALL MT_BuildAndSendZToolResponse, osal_mem_alloc
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
FUNCALL MT_BuildAndSendZToolResponse, MT_BuildSPIMsg
LOCFRAME XSTACK, 18, STACK
ARGFRAME XSTACK, 18, STACK
FUNCALL MT_BuildAndSendZToolResponse, HalUARTWrite
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
FUNCALL MT_BuildAndSendZToolResponse, osal_mem_free
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 0
MOV ?V0 + 2,R1
MOV ?V0 + 6,R2
MOV ?V0 + 7,R3
MOV ?V0 + 3,R4
MOV A,#0x10
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV ?V0 + 0,A
INC DPTR
MOVX A,@DPTR
MOV ?V0 + 1,A
// 329 byte *msg_ptr;
// 330
// 331 // Get a message buffer to build response message
// 332 msg_ptr = osal_mem_alloc( msgLen );
; Setup parameters for call to function osal_mem_alloc
MOV A,R1
MOV R2,A
MOV R3,#0x0
MOV DPTR,#(osal_mem_alloc & 0xffff)
MOV A,#((osal_mem_alloc >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 4,R2
MOV ?V0 + 5,R3
MOV R6,?V0 + 4
MOV R7,?V0 + 5
// 333 if ( msg_ptr )
MOV A,R6
JNZ ??MT_BuildAndSendZToolResponse_0
MOV A,R7
??MT_BuildAndSendZToolResponse_0:
JZ ??MT_BuildAndSendZToolResponse_1
// 334 {
// 335 #ifdef SPI_MGR_DEFAULT_PORT
// 336 MT_BuildSPIMsg( cmd, msg_ptr, dataLen, pData );
; Setup parameters for call to function MT_BuildSPIMsg
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_TWO
CFI CFA_XSP16 add(XSP16, 18)
MOV R1,?V0 + 3
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R2,?V0 + 6
MOV R3,?V0 + 7
MOV DPTR,#(MT_BuildSPIMsg & 0xffff)
MOV A,#((MT_BuildSPIMsg >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
MOV A,#0x2
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
// 337 HalUARTWrite ( SPI_MGR_DEFAULT_PORT, msg_ptr, msgLen );
; Setup parameters for call to function HalUARTWrite
MOV R4,?V0 + 2
MOV R5,#0x0
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV R1,#0x0
MOV DPTR,#(HalUARTWrite & 0xffff)
MOV A,#((HalUARTWrite >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 338 #endif
// 339 osal_mem_free( msg_ptr );
; Setup parameters for call to function osal_mem_free
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV DPTR,#(osal_mem_free & 0xffff)
MOV A,#((osal_mem_free >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 340 }
// 341 }
??MT_BuildAndSendZToolResponse_1:
SJMP ??Subroutine19_0
CFI EndBlock cfiBlock4
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine19:
CFI Block cfiBlock5 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 18)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI Invalid
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
CFI Valid
??Subroutine19_0:
MOV R7,#0x8
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock5
// 342 #endif
// 343
// 344 #if defined (ZTOOL_P1) || defined (ZTOOL_P2)
// 345 /*********************************************************************
// 346 * @fn MT_BuildAndSendZToolCB
// 347 *
// 348 * @brief
// 349 *
// 350 * Build and send a ZTOOL Callback msg
// 351 *
// 352 * @param len - length of data portion of the message
// 353 *
// 354 * @return void
// 355 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 356 void MT_BuildAndSendZToolCB( uint16 callbackID, byte len, byte *pData )
MT_BuildAndSendZToolCB:
CFI Block cfiBlock6 Using cfiCommon0
CFI Function MT_BuildAndSendZToolCB
// 357 {
FUNCALL MT_BuildAndSendZToolCB, osal_msg_allocate
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
FUNCALL MT_BuildAndSendZToolCB, osal_memcpy
LOCFRAME XSTACK, 19, STACK
ARGFRAME XSTACK, 19, STACK
FUNCALL MT_BuildAndSendZToolCB, osal_msg_send
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
MOV A,#-0x10
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V7 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-15)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-16)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
; Saved register size: 16
; Auto size: 0
MOV A,R2
MOV R6,A
MOV A,R3
MOV R7,A
MOV ?V0 + 0,R1
MOV ?V0 + 6,R4
MOV ?V0 + 7,R5
// 358 byte msgLen;
// 359 mtOSALSerialData_t *msgPtr;
// 360 byte *msg;
// 361
// 362 msgLen = sizeof ( mtOSALSerialData_t ) + SPI_0DATA_MSG_LEN + len;
// 363
// 364 msgPtr = (mtOSALSerialData_t *)osal_msg_allocate( msgLen );
; Setup parameters for call to function osal_msg_allocate
MOV A,#0x9
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_46:
LCALL ?BCALL ; Banked call to: DPTR()
MOV ?V0 + 2,R2
MOV ?V0 + 3,R3
// 365 if ( msgPtr )
MOV A,R2
JNZ ??MT_BuildAndSendZToolCB_0
MOV A,R3
??MT_BuildAndSendZToolCB_0:
JZ ??MT_BuildAndSendZToolCB_1
// 366 {
// 367 msgPtr->hdr.event = CB_FUNC;
MOV A,#0x4
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 368 msgPtr->msg = (uint8 *)(msgPtr+1);
MOV A,R2
ADD A,#0x2
MOV R0,A
MOV A,R3
ADDC A,#0x0
MOV R1,A
MOV A,R2
ADD A,#0x4
MOV R2,A
MOV A,R3
ADDC A,#0x0
MOV R3,A
MOV DPL,R0
MOV DPH,R1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 369 msg = msgPtr->msg;
// 370
// 371 //First byte is used as the event type for MT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -