📄 mac_tx_pool.s51
字号:
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 43 UINT8 n;
// 44 for (n = 0; n < MAC_OPT_TX_POOL_SIZE; n++) {
MOV R2,#0x0
MOV R0,#(pMtxPacketPool & 0xff)
MOV R1,#((pMtxPacketPool >> 8) & 0xff)
// 45 pMtxPacketPool[n].occupied = FALSE;
??mtxpInit_0:
CLR A
MOV DPL,R0
MOV DPH,R1
MOVX @DPTR,A
// 46 pMtxPacketPool[n].poolIndex = n;
MOV A,R0
ADD A,#-0x70
MOV DPL,A
MOV A,R1
ADDC A,#0x0
MOV DPH,A
MOV A,R2
MOVX @DPTR,A
// 47 }
INC R2
MOV A,R0
ADD A,#-0x6d
MOV R0,A
MOV A,R1
ADDC A,#0x0
MOV R1,A
MOV A,R2
CLR C
SUBB A,#0x6
JC ??mtxpInit_0
CFI EndBlock cfiBlock0
// 48 } // mtxpInit
REQUIRE ?Subroutine0
; // Fall through to label ?Subroutine0
RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+-4
CFI DPL0 Frame(CFA_SP, 3)
CFI DPH0 Frame(CFA_SP, 4)
POP DPH
CFI CFA_SP SP+-3
CFI DPH0 SameValue
POP DPL
CFI CFA_SP SP+-2
CFI DPL0 SameValue
RET
CFI EndBlock cfiBlock1
// 49
// 50
// 51
// 52
// 53 //-------------------------------------------------------------------------------------------------------
// 54 // MAC_TX_PACKET* mtxpReservePacket(void)
// 55 //
// 56 // DESCRIPTION:
// 57 // Reserves a packet in the packet pool
// 58 //
// 59 // RETURN VALUE:
// 60 // MAC_TX_PACKET*
// 61 // A pointer to the reserved packet, or NULL if the pool is empty
// 62 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 63 ROOT MAC_TX_PACKET * mtxpReservePacket(void) {
mtxpReservePacket:
CFI Block cfiBlock2 Using cfiCommon0
CFI Function mtxpReservePacket
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 64 MAC_TX_PACKET *pPacket;
// 65 UINT8 n;
// 66 for (n = 0; n < MAC_OPT_TX_POOL_SIZE; n++) {
MOV R3,#0x0
// 67 pPacket = &pMtxPacketPool[n];
??mtxpReservePacket_0:
MOV A,R3
MOV B,#-0x6d
MUL AB
ADD A,#(pMtxPacketPool & 0xff)
MOV DPL,A
MOV A,B
ADDC A,#((pMtxPacketPool >> 8) & 0xff)
MOV DPH,A
// 68 if (!pPacket->occupied) {
MOVX A,@DPTR
JNZ ??mtxpReservePacket_1
// 69 DISABLE_GLOBAL_INT();
CLR 0xa8.7
// 70 if (!pPacket->occupied) {
JNZ ??mtxpReservePacket_2
// 71 pPacket->occupied = TRUE;
MOV A,#0x1
MOVX @DPTR,A
// 72 ENABLE_GLOBAL_INT();
SETB 0xa8.7
// 73 return pPacket;
MOV R2,DPL
MOV R3,DPH
SJMP ??mtxpReservePacket_3
// 74 }
// 75 ENABLE_GLOBAL_INT();
??mtxpReservePacket_2:
SETB 0xa8.7
// 76 }
// 77 }
??mtxpReservePacket_1:
INC R3
MOV A,R3
CLR C
SUBB A,#0x6
JC ??mtxpReservePacket_0
// 78 return NULL;
MOV R2,#0x0
MOV R3,#0x0
??mtxpReservePacket_3:
SJMP ?Subroutine0
CFI EndBlock cfiBlock2
// 79 } // mtxpReservePacket
// 80
// 81
// 82
// 83
// 84 //-------------------------------------------------------------------------------------------------------
// 85 // void mtxpReleasePacket(MAC_TX_PACKET* pPacket)
// 86 //
// 87 // DESCRIPTION:
// 88 // Releases a packet back to the TX packet pool
// 89 //
// 90 // ARGUMENTS:
// 91 // MAC_TX_PACKET* pPacket
// 92 // A pointer to the packet to be released. This parameter can be NULL
// 93 //-------------------------------------------------------------------------------------------------------
RSEG NEAR_CODE:CODE:NOROOT(0)
// 94 ROOT void mtxpReleasePacket(MAC_TX_PACKET *pPacket) {
mtxpReleasePacket:
CFI Block cfiBlock3 Using cfiCommon0
CFI Function mtxpReleasePacket
PUSH DPL
CFI DPL0 Frame(CFA_SP, 3)
CFI CFA_SP SP+-3
PUSH DPH
CFI DPH0 Frame(CFA_SP, 4)
CFI CFA_SP SP+-4
; Saved register size: 2
; Auto size: 0
// 95 if (pPacket) {
MOV A,R2
JNZ ??mtxpReleasePacket_0
MOV A,R3
??mtxpReleasePacket_0:
JZ ??mtxpReleasePacket_1
// 96 if (mtxInfo.pPacket == pPacket) mtxInfo.pPacket = NULL;
MOV DPTR,#mtxInfo
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,R2
XRL A,R0
JNZ ??mtxpReleasePacket_2
MOV A,R3
XRL A,R1
??mtxpReleasePacket_2:
JNZ ??mtxpReleasePacket_3
MOV DPTR,#mtxInfo
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
// 97 pPacket->occupied = FALSE;
??mtxpReleasePacket_3:
CLR A
MOV DPL,R2
MOV DPH,R3
MOVX @DPTR,A
// 98 }
// 99 } // mtxpReleasePacket
??mtxpReleasePacket_1:
SJMP ?Subroutine0
CFI EndBlock cfiBlock3
ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
DS 1
END
// 100
//
// 143 bytes in segment NEAR_CODE
// 882 bytes in segment PM0_XDATA
// 1 byte in segment SFR_AN
//
// 143 bytes of CODE memory
// 0 bytes of DATA memory (+ 1 byte shared)
// 882 bytes of XDATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -