⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mac_rx_pool.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 2 页
字号:
//   32 
//   33 
//   34 
//   35 //-------------------------------------------------------------------------------------------------------
//   36 //  void mrxpInit(void)
//   37 //
//   38 //  DESCRIPTION:
//   39 //      Initializes the RX packet pool by clearing the "occupied" bits.
//   40 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   41 ROOT void mrxpInit(void) {
mrxpInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function mrxpInit
        FUNCALL mrxpInit, memset
        LOCFRAME XSTACK, 11, STACK
        ARGFRAME XSTACK, 11, STACK
        MOV	A,#-0x9
        LCALL	?FUNC_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI V1 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
//   42     memset(pMrxPacketPool, 0x00, sizeof(MAC_RX_PACKET) * MAC_OPT_RX_POOL_SIZE);
        ; Setup parameters for call to function memset
        MOV	?V0 + 0,#0x7c
        MOV	?V0 + 1,#0x2
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 11)
        MOV	R4,#0x0
        MOV	R5,#0x0
        MOV	R2,#(pMrxPacketPool & 0xff)
        MOV	R3,#((pMrxPacketPool >> 8) & 0xff)
        MOV	DPTR,#(memset & 0xffff)
        MOV	A,#((memset >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 9)
//   43 } // mrxpInit
        MOV	R7,#0x2
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock0
//   44 
//   45 
//   46 
//   47 
//   48 //-------------------------------------------------------------------------------------------------------
//   49 //   mrxpReservePacket(MAC_RX_PACKET   **macRxPacket)
//   50 //
//   51 //  DESCRIPTION:
//   52 //      Reserves a packet from the RX packet pool.
//   53 //
//   54 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   55 ROOT MAC_RX_PACKET  * mrxpReservePacket(void) {
mrxpReservePacket:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function mrxpReservePacket
        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
//   56     MAC_RX_PACKET   *pPacket;
//   57     UINT8 n;
//   58     for (n = 0; n < MAC_OPT_RX_POOL_SIZE; n++) {
        MOV	R3,#0x0
//   59         pPacket = &pMrxPacketPool[n];
??mrxpReservePacket_0:
        MOV	A,R3
        MOV	B,#-0x61
        MUL	AB
        ADD	A,#(pMrxPacketPool & 0xff)
        MOV	DPL,A
        MOV	A,B
        ADDC	A,#((pMrxPacketPool >> 8) & 0xff)
        MOV	DPH,A
//   60         DISABLE_GLOBAL_INT();
        CLR	0xa8.7
//   61         if (!(pPacket->flags & MRXP_FLAG_PACKET_OCCUPIED_BM)) {
        MOVX	A,@DPTR
        MOV	C,0xE0 /* A   */.0
        JC	??mrxpReservePacket_1
//   62             pPacket->flags |= MRXP_FLAG_PACKET_OCCUPIED_BM;
        SETB	0xE0 /* A   */.0
        MOVX	@DPTR,A
//   63             ENABLE_GLOBAL_INT();
        SETB	0xa8.7
//   64             return pPacket;
        MOV	R2,DPL
        MOV	R3,DPH
        SJMP	??mrxpReservePacket_2
//   65         }
//   66         ENABLE_GLOBAL_INT();
??mrxpReservePacket_1:
        SETB	0xa8.7
//   67     }
        INC	R3
        MOV	A,R3
        CLR	C
        SUBB	A,#0x4
        JC	??mrxpReservePacket_0
//   68     return NULL;
        MOV	R2,#0x0
        MOV	R3,#0x0
        CFI EndBlock cfiBlock1
??mrxpReservePacket_2:
        REQUIRE ?Subroutine0
        ; // Fall through to label ?Subroutine0
//   69 } // mrxpReservePacket

        RSEG NEAR_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 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 cfiBlock2
//   70 
//   71 
//   72 
//   73 
//   74 //-------------------------------------------------------------------------------------------------------
//   75 //  void mrxpReleasePacket(MAC_RX_PACKET* pPacket)
//   76 //
//   77 //  DESCRIPTION:
//   78 //      Releases a packet back to the RX packet pool.
//   79 //
//   80 //  ARGUMENTS:
//   81 //      MAC_RX_PACKET* pPacket
//   82 //          A pointer to the packet to be released. This parameter can be NULL.
//   83 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   84 ROOT void mrxpReleasePacket(MAC_RX_PACKET   *pPacket) {
mrxpReleasePacket:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function mrxpReleasePacket
        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
//   85     if (pPacket) pPacket->flags = 0x00;
        MOV	A,R2
        JNZ	??mrxpReleasePacket_0
        MOV	A,R3
??mrxpReleasePacket_0:
        JZ	??mrxpReleasePacket_1
        CLR	A
        MOV	DPL,R2
        MOV	DPH,R3
        MOVX	@DPTR,A
//   86 } // mrxpReleasePacket
??mrxpReleasePacket_1:
        SJMP	?Subroutine0
        CFI EndBlock cfiBlock3

        ASEGN SFR_AN:DATA:NOROOT,0a8H
// union <unnamed> volatile __sfr _A_IEN0
_A_IEN0:
        DS 1

        END
//   87 
// 
// 117 bytes in segment NEAR_CODE
// 636 bytes in segment PM0_XDATA
//   1 byte  in segment SFR_AN
// 
// 117 bytes of CODE  memory
//   0 bytes of DATA  memory (+ 1 byte shared)
// 636 bytes of XDATA memory
//
//Errors: none
//Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -