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

📄 blind_node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 5 页
字号:
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(CreateInputArrayToLocEngine & 0xffff)
        MOV	A,#((CreateInputArrayToLocEngine >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  274 
//  275          CalculatePosition(refNodes, a_val, n_index, &xLocValue, &yLocValue);
        ; Setup parameters for call to function CalculatePosition
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOV	?V0 + 2,DPL
        MOV	?V0 + 3,DPH
        MOV	R0,#?V0 + 2
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 27)
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	?V0 + 2,DPL
        MOV	?V0 + 3,DPH
        MOV	R0,#?V0 + 2
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 29)
        MOV	DPTR,#n_index
        MOVX	A,@DPTR
        MOV	R4,A
        MOV	DPTR,#a_val
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	R2,#(refNodes & 0xff)
        MOV	R3,#((refNodes >> 8) & 0xff)
        MOV	DPTR,#(CalculatePosition & 0xffff)
        MOV	A,#((CalculatePosition >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x4
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 25)
//  276          x = (xLocValue << 1) + xUpperLeft;          // convert to UINT8_2 and add offset
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        CLR	C
        RLC	A
        MOV	R0,A
        CLR	A
        RLC	A
        MOV	R1,A
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        ADD	A,R0
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,R1
        MOV	R1,A
        MOV	DPTR,#x
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  277          y = (yLocValue << 1) + yUpperLeft;          // convert to UINT8_2 and add offset
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        CLR	C
        RLC	A
        MOV	R0,A
        CLR	A
        RLC	A
        MOV	R1,A
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        ADD	A,R0
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,R1
        MOV	R1,A
        MOV	DPTR,#y
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  278 
//  279 #ifdef CC2430EB
//  280          PrintXY();
        ; Setup parameters for call to function PrintXY
        MOV	DPTR,#(PrintXY & 0xffff)
        MOV	A,#((PrintXY >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  281 #endif
//  282          if(DiscardResult(xStrongestNode, yStrongestNode, strongestRssi))
        ; Setup parameters for call to function DiscardResult
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	A,#0x9
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R4,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	A,#0x7
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(DiscardResult & 0xffff)
        MOV	A,#((DiscardResult >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        JZ	??RunBlindNode_26
//  283          {
//  284             SendText("Result discarded");
        ; Setup parameters for call to function SendText
        MOV	R2,#(`?<Constant "Result discarded">` & 0xff)
        MOV	R3,#((`?<Constant "Result discarded">` >> 8) & 0xff)
        MOV	DPTR,#(SendText & 0xffff)
        MOV	A,#((SendText >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  285             x = y = UNINITIALIZED_XY_VALUE;
        MOV	DPTR,#y
        MOV	A,#-0x1
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
        MOV	DPTR,#x
        MOVX	@DPTR,A
        INC	DPTR
        MOVX	@DPTR,A
//  286          }
//  287          SendPosition(PC_SHORT);
??RunBlindNode_26:
        ; Setup parameters for call to function SendPosition
        MOV	R2,#0x34
        MOV	R3,#0x12
        MOV	DPTR,#(SendPosition & 0xffff)
        MOV	A,#((SendPosition >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  288          SendDebugInfo(xUpperLeft, yUpperLeft);
        ; Setup parameters for call to function SendDebugInfo
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOVX	A,@DPTR
        MOV	R4,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R5,A
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	A,@DPTR
        MOV	R2,A
        INC	DPTR
        MOVX	A,@DPTR
        MOV	R3,A
        MOV	DPTR,#(SendDebugInfo & 0xffff)
        MOV	A,#((SendDebugInfo >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  289 
//  290          if (blinkLed){
        MOV	DPTR,#blinkLed
        MOVX	A,@DPTR
        JZ	??RunBlindNode_27
//  291             // if a "blink led message" has been sent from PC, it will not be handled untill blind node
//  292             // reach this state
//  293             blinkLed = FALSE;
        CLR	A
        MOVX	@DPTR,A
//  294             LED1 = LED_ON;
        CLR	0x90.0
//  295             ledBlinkCounter = 0;
        MOV	DPTR,#ledBlinkCounter
        MOVX	@DPTR,A
//  296             AddToSleepTimer(LED_BLINK_TIME);
        ; Setup parameters for call to function AddToSleepTimer
        MOV	R2,#0x64
        MOV	R3,A
        MOV	DPTR,#(AddToSleepTimer & 0xffff)
        MOV	A,#((AddToSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  297             blindNodeState = BLINK_LED_STATE;
        MOV	A,#0x9
        SJMP	??RunBlindNode_28
//  298          }
//  299          else
//  300          {
//  301             AddToSleepTimer(BLIND_NODE_POWER_DOWN_PERIODE);
??RunBlindNode_27:
        ; Setup parameters for call to function AddToSleepTimer
        MOV	R2,#-0x48
        MOV	R3,#0xb
        MOV	DPTR,#(AddToSleepTimer & 0xffff)
        MOV	A,#((AddToSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  302             blindNodeState = SLEEP_STATE;
        MOV	A,#0x8
??RunBlindNode_28:
        MOV	DPTR,#blindNodeState
        MOVX	@DPTR,A
//  303          }
//  304          INT_SETFLAG(INUM_ST, INT_CLR);
        LJMP	??RunBlindNode_18 & 0xFFFF
//  305          INT_ENABLE(INUM_ST, INT_ON);
//  306          break;
//  307       case BLINK_LED_STATE:
//  308          // state transition handled by Sleep Timer
//  309       case SLEEP_STATE:
//  310          // state transition handled by Sleep Timer
//  311 #ifdef USE_PM
//  312          mpmSetAndResumeMacAndCpuPowerMode (POWER_MODE_PM2, RESUME_MODE_PARTS_PRESERVED, FALSE);
??RunBlindNode_14:
        ; Setup parameters for call to function mpmSetAndResumeMacAndCpuPowerMode
        MOV	R3,#0x0
        MOV	R2,#0x1
        MOV	R1,#0x1
        LCALL	mpmSetAndResumeMacAndCpuPowerMode & 0xFFFF
        LJMP	??RunBlindNode_0 & 0xFFFF
//  313 #endif
//  314          break;
//  315       default:
//  316          blindNodeState = INIT_BCAST;
??RunBlindNode_6:
        CLR	A
        LJMP	??RunBlindNode_16 & 0xFFFF
        CFI EndBlock cfiBlock0
//  317          break;
//  318       }
//  319    }
//  320 }
//  321 
//  322 
//  323 /******************************************************************************
//  324 *
//  325 * This function will handle sleep timer interrupts for blind node
//  326 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  327 void ST_IRQ_BlindNode(void)
ST_IRQ_BlindNode:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function ST_IRQ_BlindNode
//  328 {
        FUNCALL ST_IRQ_BlindNode, AddToSleepTimer
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ST_IRQ_BlindNode, AddToSleepTimer
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        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
//  329    INT_SETFLAG(INUM_ST, INT_CLR);
        CLR	0xc0.7
//  330    INT_ENABLE(INUM_ST, INT_OFF);
        CLR	0xa8.5
//  331 
//  332    switch (blindNodeState){
        MOV	DPTR,#blindNodeState
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_DENSE
`?<Jumptable for ST_IRQ_BlindNode>_0`:
        DB        1
        DB        8
        DW        ??ST_IRQ_BlindNode_0
        DW        ??ST_IRQ_BlindNode_1
        DW        ??ST_IRQ_BlindNode_2
        DW        ??ST_IRQ_BlindNode_1
        DW        ??ST_IRQ_BlindNode_1
        DW        ??ST_IRQ_BlindNode_1
        DW        ??ST_IRQ_BlindNode_3
        DW        ??ST_IRQ_BlindNode_1
        DW        ??ST_IRQ_BlindNode_0
        DW        ??ST_IRQ_BlindNode_4
//  333    case BCAST_REQUEST:
//  334       break;
//  335    case RECEIVE_BCAST_REPLY:
//  336       blindNodeState = CHECK_REPLIES;
??ST_IRQ_BlindNode_2:
        MOV	A,#0x3
        SJMP	??ST_IRQ_BlindNode_5
//  337       break;
//  338    case CHECK_REPLIES:
//  339       break;
//  340    case SETUP_DATA_COLLECTING:
//  341       break;
//  342    case REQUEST_REF_NODE_PACKET:
//  343       break;
//  344    case RECEIVE_REF_NODES_PACKET:
//  345       blindNodeState = REQUEST_REF_NODE_PACKET;
??ST_IRQ_BlindNode_3:
        MOV	A,#0x5
        MOV	DPTR,#blindNodeState
        MOVX	@DPTR,A
//  346       nbrOfReqTimeOuts++;
        MOV	DPTR,#nbrOfReqTimeOuts
        MOVX	A,@DPTR
        INC	A
        SJMP	??ST_IRQ_BlindNode_6
//  347       break;
//  348    case ESTIMATE_LOCATION:
//  349       break;
//  350    case BLINK_LED_STATE:
//  351       LED1 ^= 1;
??ST_IRQ_BlindNode_4:
        XRL	0x90,#0x1
        MOV	A,0x90
//  352       ledBlinkCounter++;
        MOV	DPTR,#ledBlinkCounter
        MOVX	A,@DPTR
        INC	A
        MOVX	@DPTR,A
//  353       if(ledBlinkCounter > NBR_OF_LED_BLINK * 2){
        CLR	C
        SUBB	A,#0x15
        JC	??ST_IRQ_BlindNode_7
//  354          blindNodeState = SLEEP_STATE;
        MOV	A,#0x8
        MOV	DPTR,#blindNodeState
        MOVX	@DPTR,A
//  355          AddToSleepTimer(BLIND_NODE_POWER_DOWN_PERIODE);
        ; Setup parameters for call to function AddToSleepTimer
        MOV	R2,#-0x48
        MOV	R3,#0xb
        MOV	DPTR,#(AddToSleepTimer & 0xffff)
        MOV	A,#((AddToSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  356          LED1 = LED_OFF;
        SETB	0x90.0
        SJMP	??ST_IRQ_BlindNode_8
//  357       }
//  358       else
//  359       {
//  360          AddToSleepTimer(LED_BLINK_TIME);
??ST_IRQ_BlindNode_7:
        ; Setup parameters for call to function AddToSleepTimer
        MOV	R2,#0x64
        MOV	R3,#0x0
        MOV	DPTR,#(AddToSleepTimer & 0xffff)
        MOV	A,#((AddToSleepTimer >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  361       }
//  362       INT_ENABLE(INUM_ST, INT_ON);
??ST_IRQ_BlindNode_8:
        SETB	0xa8.5
        SJMP	??ST_IRQ_BlindNode_1
//  363       break;
//  364    case SLEEP_STATE:
//  365       blindNodeState = INIT_BCAST;
??ST_IRQ_BlindNode_0:
        CLR	A
??ST_IRQ_BlindNode_5:
        MOV	DPTR,#blindNodeState
??ST_IRQ_BlindNode_6:
        MOVX	@DPTR,A
//  366       break;
//  367    default:
//  368       blindNodeState = INIT_BCAST;
//  369       break;
//  370    }
//  371 }
??ST_IRQ_BlindNode_1:
        SJMP	??Subroutine0_0
        CFI EndBlock cfiBlock1

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI CFA_XSP16 add(XSP16, 1)
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI Invalid
        LCALL	?DEALLOC_XSTACK8

⌨️ 快捷键说明

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