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

📄 mac_scan.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        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
        MOV	A,R2
        MOV	R6,A
        MOV	A,R3
        MOV	R7,A
//  222     UINT8 n;
//  223     PAN_DESCRIPTOR   *pExistingPanDesc;
//  224     MAC_SCAN_RESULT   *pScanResult = mscInfo.pScanResult;
        MOV	DPTR,#(mscInfo + 6)
        MOVX	A,@DPTR
        MOV	?V0 + 2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 3,A
//  225 
//  226     // Search for duplicates
//  227     for (n = 0; n < pScanResult->resultListSize; n++) {
        MOV	?V0 + 0,#0x0
        SJMP	??mscPanDescriptorExists_0
//  228         pExistingPanDesc = &pScanResult->list.pPANDescriptorList[n];
//  229         if ((pPanDescriptor->coordAddrMode  == pExistingPanDesc->coordAddrMode ) &&
//  230             (pPanDescriptor->coordPanId     == pExistingPanDesc->coordPanId ) &&
//  231             (pPanDescriptor->logicalChannel == pExistingPanDesc->logicalChannel)) {
//  232 
//  233             if (pPanDescriptor->coordAddrMode == AM_EXTENDED_64) {
//  234                 if (msupCompareExtendedAddress(&pPanDescriptor->coordAddress, &pExistingPanDesc->coordAddress)) return TRUE;
//  235             } else {
//  236                 if (pPanDescriptor->coordAddress.Short == pExistingPanDesc->coordAddress.Short) return TRUE;
??mscPanDescriptorExists_1:
        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	??mscPanDescriptorExists_2
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,R1
??mscPanDescriptorExists_2:
        JNZ	$+5
        LJMP	??mscPanDescriptorExists_3
//  237             }
??mscPanDescriptorExists_4:
        INC	?V0 + 0
??mscPanDescriptorExists_0:
        MOV	DPL,?V0 + 2
        MOV	DPH,?V0 + 3
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	A,?V0 + 0
        CLR	C
        SUBB	A,R2
        JC	$+5
        LJMP	??mscPanDescriptorExists_5
        MOV	A,?V0 + 0
        MOV	B,#0x17
        MUL	AB
        MOV	R0,A
        MOV	R1,B
        MOV	A,?V0 + 2
        ADD	A,R0
        MOV	R0,A
        MOV	A,?V0 + 3
        ADDC	A,R1
        MOV	R1,A
        MOV	A,#0x6
        ADD	A,R0
        MOV	R0,A
        CLR	A
        ADDC	A,R1
        MOV	R1,A
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	?V0 + 1,A
        MOV	DPL,R0
        MOV	DPH,R1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,?V0 + 1
        JNZ	??mscPanDescriptorExists_4
        MOV	DPL,R6
        MOV	DPH,R7
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPL,R0
        MOV	DPH,R1
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,R2
        JNZ	??mscPanDescriptorExists_6
        INC	DPTR
        MOVX	A,@DPTR
        XRL	A,R3
??mscPanDescriptorExists_6:
        JNZ	??mscPanDescriptorExists_4
        MOV	A,R6
        ADD	A,#0x16
        MOV	DPL,A
        MOV	A,R7
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        MOV	R2,A
        MOV	A,R0
        ADD	A,#0x16
        MOV	DPL,A
        MOV	A,R1
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        XRL	A,R2
        JZ	$+5
        LJMP	??mscPanDescriptorExists_4
        MOV	A,R0
        ADD	A,#0x8
        MOV	R4,A
        MOV	A,R1
        ADDC	A,#0x0
        MOV	R5,A
        MOV	A,R6
        ADD	A,#0x8
        MOV	DPL,A
        MOV	A,R7
        ADDC	A,#0x0
        MOV	DPH,A
        MOV	A,#0x3
        XRL	A,?V0 + 1
        JZ	$+5
        LJMP	??mscPanDescriptorExists_1
        ; Setup parameters for call to function msupCompareExtendedAddress
        MOV	R2,DPL
        MOV	R3,DPH
        LCALL	msupCompareExtendedAddress
        MOV	A,R1
        JNZ	$+5
        LJMP	??mscPanDescriptorExists_4
??mscPanDescriptorExists_3:
        MOV	R1,#0x1
        SJMP	??mscPanDescriptorExists_7
//  238         }
//  239     }
//  240 
//  241     // No match
//  242     return FALSE;
??mscPanDescriptorExists_5:
        MOV	R1,#0x0
??mscPanDescriptorExists_7:
        LJMP	??Subroutine0_0
        CFI EndBlock cfiBlock4
//  243 
//  244 } // mscPanDescriptorExists
//  245 
//  246 
//  247 
//  248 
//  249 //-------------------------------------------------------------------------------------------------------
//  250 //  BOOL mscSetNextChannel(void)
//  251 //
//  252 //  DESCRIPTION:
//  253 //      Finds the next valid channel during scan (changes the mscInfo.currentChannel variable), and
//  254 //      updates the unscanned channels mask.
//  255 //
//  256 //  RETURN VALUE:
//  257 //      BOOL
//  258 //          FALSE when there are no more channels to scan.
//  259 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  260 ROOT BOOL mscSetNextChannel(void) {
mscSetNextChannel:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function mscSetNextChannel
        MOV	A,#-0xf
        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 V7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V6 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-15)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 15)
        ; Saved register size: 15
        ; Auto size: 0
//  261     UINT8 n;
//  262     DWORD bitmask = 0x00000001;
        MOV	DPTR,#__Constant_1
        MOV	R0,#?V0 + 4
        LCALL	?L_MOV_X
//  263 
//  264     // Go through the channels
//  265     mscInfo.currentChannel++;
        MOV	DPTR,#(mscInfo + 8)
        MOVX	A,@DPTR
        INC	A
        MOVX	@DPTR,A
//  266     for (n = 0; n < 27; n++) {
        MOV	R2,#0x0
//  267         if (n >= mscInfo.currentChannel) {
??mscSetNextChannel_0:
        MOV	DPTR,#(mscInfo + 8)
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	A,R2
        CLR	C
        SUBB	A,R3
        JC	??mscSetNextChannel_1
//  268             if (bitmask & mscInfo.scanChannels) {
        MOV	?V0 + 0,?V0 + 4
        MOV	?V0 + 1,?V0 + 5
        MOV	?V0 + 2,?V0 + 6
        MOV	?V0 + 3,?V0 + 7
        MOV	DPTR,#(mscInfo + 1)
        MOV	R0,#?V0 + 0
        LCALL	?L_AND_X
        MOV	DPTR,#__Constant_0
        MOV	R0,#?V0 + 0
        LCALL	?L_EQ_X
        JZ	??mscSetNextChannel_1
//  269                 mscInfo.currentChannel = n;
        MOV	A,R2
        MOV	DPTR,#(mscInfo + 8)
        MOVX	@DPTR,A
//  270                 mscInfo.pScanResult->unscannedChannels &= ~bitmask;
        MOV	R0,#?V0 + 4
        LCALL	?L_NOT
        MOV	DPTR,#(mscInfo + 6)
        MOVX	A,@DPTR
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	DPH,A
        MOV	DPL,R0
        INC	DPTR
        MOV	R0,#?V0 + 4
        LCALL	?L_AND_TO_X
//  271                 return TRUE;
        MOV	R1,#0x1
        SJMP	??mscSetNextChannel_2
//  272             }
//  273         }
//  274         bitmask = bitmask << 1;
??mscSetNextChannel_1:
        MOV	A,#0x1
        MOV	R0,#?V0 + 4
        LCALL	?L_SHL
//  275     }
        INC	R2
        MOV	A,R2
        CLR	C
        SUBB	A,#0x1b
        JC	??mscSetNextChannel_0
//  276     return FALSE;
        MOV	R1,#0x0
??mscSetNextChannel_2:
        MOV	R7,#0x8
        LJMP	?FUNC_LEAVE_XDATA
        CFI EndBlock cfiBlock5
//  277 
//  278 } // mscSetNextChannel
//  279 
//  280 
//  281 
//  282 
//  283 //-------------------------------------------------------------------------------------------------------
//  284 //  void mscChannelTimeout(void)
//  285 //
//  286 //  DESCRIPTION:
//  287 //      Callback used by the scanning mechanism to indicate that the current channel has been finished.
//  288 //-------------------------------------------------------------------------------------------------------

        RSEG NEAR_CODE:CODE:NOROOT(0)
//  289 void mscChannelTimeout(void) NEAR {
mscChannelTimeout:
        CFI Block cfiBlock6 Using cfiCommon1
        CFI Function mscChannelTimeout
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  290     mscInfo.channelComplete = TRUE;
        MOV	A,#0x1
        MOV	DPTR,#(mscInfo + 9)
        MOVX	@DPTR,A
//  291 } // mscChannelTimeout
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock6
//  292 
//  293 
//  294 
//  295 
//  296 //-------------------------------------------------------------------------------------------------------
//  297 //  void mscChannelTimeout(void)
//  298 //
//  299 //  DESCRIPTION:
//  300 //      This task implements the scan state machine.
//  301 //
//  302 //  TASK DATA:
//  303 //      0

⌨️ 快捷键说明

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