📄 saddr.s51
字号:
INC DPTR
INC DPTR
MOVX A,@DPTR
JZ ??sAddrCmp_1
// 46 {
// 47 return FALSE;
// 48 }
// 49 else if (pAddr1->addrMode == SADDR_MODE_SHORT)
XRL A,#0x2
MOV DPL,R2
MOV DPH,R3
JNZ ??sAddrCmp_3
// 50 {
// 51 return (bool) (pAddr1->addr.shortAddr == pAddr2->addr.shortAddr);
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
XRL A,R0
JNZ ??sAddrCmp_4
INC DPTR
MOVX A,@DPTR
XRL A,R1
??sAddrCmp_4:
JNZ ??sAddrCmp_1
MOV R1,#0x1
SJMP ??sAddrCmp_2
// 52 }
// 53 else if (pAddr1->addrMode == SADDR_MODE_EXT)
??sAddrCmp_3:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x3
JNZ ??sAddrCmp_1
// 54 {
// 55 return (sAddrExtCmp(pAddr1->addr.extAddr, pAddr2->addr.extAddr));
; Setup parameters for call to function sAddrExtCmp
MOV DPTR,#(sAddrExtCmp & 0xffff)
MOV A,#((sAddrExtCmp >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
CFI EndBlock cfiBlock0
??sAddrCmp_2:
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
// 56 }
// 57 else
// 58 {
// 59 return FALSE;
// 60 }
// 61 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
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(-9)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 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)))
MOV R7,#0x1
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
// 62
// 63 /****************************************************************************
// 64 * @fn sAddrCpy
// 65 *
// 66 * @brief Copy a device address.
// 67 *
// 68 * input parameters
// 69 *
// 70 * @param pSrc - Pointer to address to copy.
// 71 *
// 72 * output parameters
// 73 *
// 74 * @param pDest - Pointer to address of copy.
// 75 *
// 76 * @return None.
// 77 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 78 void sAddrCpy(sAddr_t *pDest, const sAddr_t *pSrc)
sAddrCpy:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function sAddrCpy
// 79 {
FUNCALL sAddrCpy, sAddrExtCpy
LOCFRAME XSTACK, 9, STACK
ARGFRAME XSTACK, 9, STACK
MOV A,#-0x9
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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 9)
; Saved register size: 9
; Auto size: 0
// 80 pDest->addrMode = pSrc->addrMode;
MOV DPL,R4
MOV DPH,R5
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX @DPTR,A
// 81
// 82 if (pDest->addrMode == SADDR_MODE_SHORT)
MOV A,#0x2
XRL A,R6
JNZ ??sAddrCpy_0
// 83 {
// 84 pDest->addr.shortAddr = pSrc->addr.shortAddr;
MOV DPL,R4
MOV DPH,R5
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPL,R2
MOV DPH,R3
MOV A,R0
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
SJMP ??sAddrCpy_1
// 85 }
// 86 else if (pDest->addrMode == SADDR_MODE_EXT)
??sAddrCpy_0:
MOV DPL,R2
MOV DPH,R3
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,#0x3
JNZ ??sAddrCpy_1
// 87 {
// 88 sAddrExtCpy(pDest->addr.extAddr, pSrc->addr.extAddr);
; Setup parameters for call to function sAddrExtCpy
MOV DPTR,#(sAddrExtCpy & 0xffff)
MOV A,#((sAddrExtCpy >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 89 }
// 90 }
??sAddrCpy_1:
SJMP ?Subroutine0
CFI EndBlock cfiBlock2
// 91
// 92 /****************************************************************************
// 93 * @fn sAddrExtCmp
// 94 *
// 95 * @brief Compare two extended addresses.
// 96 *
// 97 * input parameters
// 98 *
// 99 * @param pAddr1 - Pointer to first address.
// 100 * @param pAddr2 - Pointer to second address.
// 101 *
// 102 * output parameters
// 103 *
// 104 * @return TRUE if addresses are equal, FALSE otherwise
// 105 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 106 bool sAddrExtCmp(const uint8 * pAddr1, const uint8 * pAddr2)
sAddrExtCmp:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function sAddrExtCmp
// 107 {
MOV A,#-0xa
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 V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
; Saved register size: 10
; Auto size: 0
// 108 byte i;
// 109
// 110 for (i = SADDR_EXT_LEN; i != 0; i--)
MOV ?V0 + 0,#0x8
// 111 {
// 112 if (*pAddr1++ != *pAddr2++)
??sAddrExtCmp_0:
MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV DPL,R0
MOV DPH,R1
INC DPTR
MOV R2,DPL
MOV R3,DPH
MOV A,R4
MOV R6,A
MOV A,R5
MOV R7,A
MOV DPL,R6
MOV DPH,R7
INC DPTR
MOV R4,DPL
MOV R5,DPH
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
MOV R0,A
MOV DPL,R6
MOV DPH,R7
MOVX A,@DPTR
XRL A,R0
JZ ??sAddrExtCmp_1
// 113 {
// 114 return FALSE;
MOV R1,#0x0
SJMP ??sAddrExtCmp_2
// 115 }
// 116 }
??sAddrExtCmp_1:
DEC ?V0 + 0
MOV A,?V0 + 0
JNZ ??sAddrExtCmp_0
// 117 return TRUE;
MOV R1,#0x1
??sAddrExtCmp_2:
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock3
// 118 }
// 119
// 120 /****************************************************************************
// 121 * @fn sAddrExtCpy
// 122 *
// 123 * @brief Copy an extended address.
// 124 *
// 125 * input parameters
// 126 *
// 127 * @param pSrc - Pointer to address to copy.
// 128 *
// 129 * output parameters
// 130 *
// 131 * @param pDest - Pointer to address of copy.
// 132 *
// 133 * @return pDest + SADDR_EXT_LEN.
// 134 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 135 void *sAddrExtCpy(uint8 * pDest, const uint8 * pSrc)
sAddrExtCpy:
CFI Block cfiBlock4 Using cfiCommon0
CFI Function sAddrExtCpy
// 136 {
FUNCALL sAddrExtCpy, osal_memcpy
LOCFRAME XSTACK, 14, STACK
ARGFRAME XSTACK, 14, STACK
MOV A,#-0xb
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 V2 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 11)
; Saved register size: 11
; Auto size: 0
// 137 return osal_memcpy(pDest, pSrc, SADDR_EXT_LEN);
; Setup parameters for call to function osal_memcpy
MOV ?V0 + 0,R4
MOV ?V0 + 1,R5
MOV ?V0 + 2,#0x0
MOV R0,#?V0 + 0
LCALL ?PUSH_XSTACK_I_THREE
CFI CFA_XSP16 add(XSP16, 14)
MOV R4,#0x8
MOV R5,#0x0
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, 11)
MOV R7,#0x3
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock4
// 138 }
END
// 139
// 140
// 141
// 142
//
// 298 bytes in segment BANKED_CODE
//
// 298 bytes of CODE memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -