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

📄 node.s51

📁 zigbee location examples
💻 S51
📖 第 1 页 / 共 3 页
字号:
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
//   64    BYTE packetType;
//   65 
//   66    packetType = pMDI->pMsdu[PACKET_INDEX_TYPE];
//   67 
//   68    switch (packetType){
        MOV	A,R2
        ADD	A,#0x1a
        MOV	DPL,A
        MOV	A,R3
        ADDC	A,#0x0
        MOV	DPH,A
        MOVX	A,@DPTR
        LCALL	?UC_SWITCH_SPARSE
`?<Jumptable for NodeDataIndication>_0`:
        DB        1
        DB        17
        DB        18
        DW        ??NodeDataIndication_0
        DB        2
        DB        32
        DW        ??NodeDataIndication_1
        DB        34
        DW        ??NodeDataIndication_2
        DW        ??NodeDataIndication_3
//   69    case PACKET_TYPE_SETUP_PARAMETER:
//   70       if (nodeType == REF_NODE){
??NodeDataIndication_1:
        MOV	A,R2
        ADD	A,#0x1b
        MOV	R2,A
        MOV	A,R3
        ADDC	A,#0x0
        MOV	R3,A
        MOV	DPTR,#nodeType
        MOVX	A,@DPTR
        JNZ	??NodeDataIndication_4
//   71          SetupRefNode(&pMDI->pMsdu[PACKET_INDEX_NBR_OF_CONFIG_DATA]);
        ; Setup parameters for call to function SetupRefNode
        MOV	DPTR,#(SetupRefNode & 0xffff)
        MOV	A,#((SetupRefNode >> 16) & 0xff)
??NodeDataIndication_5:
        LCALL	?BCALL               ; Banked call to: DPTR()
        SJMP	??NodeDataIndication_3
//   72       }
//   73       else{
//   74          SetupBlindNode(&pMDI->pMsdu[PACKET_INDEX_NBR_OF_CONFIG_DATA]);
??NodeDataIndication_4:
        ; Setup parameters for call to function SetupBlindNode
        MOV	DPTR,#(SetupBlindNode & 0xffff)
        MOV	A,#((SetupBlindNode >> 16) & 0xff)
        SJMP	??NodeDataIndication_5
//   75       }
//   76       break;
//   77    case PACKET_TYPE_BLINK_LED:
//   78       blinkLed = TRUE;
??NodeDataIndication_2:
        MOV	A,#0x1
        MOV	DPTR,#blinkLed
        SJMP	??NodeDataIndication_6
//   79       break;
//   80    // case PACKET_TYPE_BLIND_NODE_POSITION:
//   81    case PACKET_TYPE_BLIND_NODE_REQ_SIGNAL: /* only sent to ref node   */
//   82    case PACKET_TYPE_REF_NODE_POSITION:     /* only sent to blind node */
//   83       if(BUFFER_EMPTY()){
??NodeDataIndication_0:
        MOV	DPTR,#buffer
        MOVX	A,@DPTR
        JNZ	??NodeDataIndication_3
//   84          msgReceived = TRUE;
        MOV	A,#0x1
        MOV	DPTR,#msgReceived
        MOVX	@DPTR,A
//   85          memcpy(&buffer.b, pMDI, sizeof(MCPS_DATA_INDICATION));
        ; Setup parameters for call to function memcpy
        MOV	?V0 + 0,#-0x70
        MOV	?V0 + 1,#0x0
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 12)
        MOV	A,R2
        MOV	R4,A
        MOV	A,R3
        MOV	R5,A
        MOV	R2,#((buffer + 1) & 0xff)
        MOV	R3,#(((buffer + 1) >> 8) & 0xff)
        MOV	DPTR,#(memcpy & 0xffff)
        MOV	A,#((memcpy >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
//   86          SET_BUFFER_FILLED();
        MOV	A,#0x1
        MOV	DPTR,#buffer
??NodeDataIndication_6:
        MOVX	@DPTR,A
//   87       }
//   88       break;
//   89    default:
//   90       break;
//   91    }
//   92 }
??NodeDataIndication_3:
        LJMP	??Subroutine0_0 & 0xFFFF
        CFI EndBlock cfiBlock0
//   93 
//   94 /******************************************************************************
//   95 *
//   96 * Sleep timer interrupt handler
//   97 ******************************************************************************/
//   98 #pragma vector=ST_VECTOR

        RSEG NEAR_CODE:CODE:NOROOT(0)
//   99 __near_func __interrupt void ST_IRQ(void){
ST_IRQ:
        CFI Block cfiBlock1 Using cfiCommon1
        CFI Function ST_IRQ
        FUNCALL ST_IRQ, ST_IRQ_RefNode
        LOCFRAME ISTACK, 11, STACK
        ARGFRAME ISTACK, 11, STACK
        FUNCALL ST_IRQ, ST_IRQ_BlindNode
        LOCFRAME ISTACK, 11, STACK
        ARGFRAME ISTACK, 11, STACK
        PUSH	A
        CFI A Frame(CFA_SP, 3)
        CFI CFA_SP SP+-3
        PUSH	PSW
        CFI PSW Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        MOV	A,R0
        CFI R0 A
        PUSH	A
        CFI R0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        MOV	A,R1
        CFI R1 A
        PUSH	A
        CFI R1 Frame(CFA_SP, 6)
        CFI CFA_SP SP+-6
        MOV	A,R2
        CFI R2 A
        PUSH	A
        CFI R2 Frame(CFA_SP, 7)
        CFI CFA_SP SP+-7
        MOV	A,R3
        CFI R3 A
        PUSH	A
        CFI R3 Frame(CFA_SP, 8)
        CFI CFA_SP SP+-8
        MOV	A,R4
        CFI R4 A
        PUSH	A
        CFI R4 Frame(CFA_SP, 9)
        CFI CFA_SP SP+-9
        MOV	A,R5
        CFI R5 A
        PUSH	A
        CFI R5 Frame(CFA_SP, 10)
        CFI CFA_SP SP+-10
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 11)
        CFI CFA_SP SP+-11
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 12)
        CFI CFA_SP SP+-12
        PUSH	B
        CFI B Frame(CFA_SP, 13)
        CFI CFA_SP SP+-13
        ; Saved register size: 11
        ; Auto size: 0
//  100    if (nodeType == REF_NODE){
        MOV	DPTR,#nodeType
        MOVX	A,@DPTR
        JNZ	??ST_IRQ_0
//  101        ST_IRQ_RefNode();
        ; Setup parameters for call to function ST_IRQ_RefNode
        MOV	DPTR,#(ST_IRQ_RefNode & 0xffff)
        MOV	A,#((ST_IRQ_RefNode >> 16) & 0xff)
        SJMP	??ST_IRQ_1
//  102    }
//  103    else{
//  104       ST_IRQ_BlindNode();
??ST_IRQ_0:
        ; Setup parameters for call to function ST_IRQ_BlindNode
        MOV	DPTR,#(ST_IRQ_BlindNode & 0xffff)
        MOV	A,#((ST_IRQ_BlindNode >> 16) & 0xff)
??ST_IRQ_1:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  105    }
//  106 }
        POP	B
        CFI B SameValue
        CFI CFA_SP SP+-12
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-11
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-10
        POP	A
        CFI R5 A
        CFI CFA_SP SP+-9
        MOV	R5,A
        CFI R5 SameValue
        POP	A
        CFI R4 A
        CFI CFA_SP SP+-8
        MOV	R4,A
        CFI R4 SameValue
        POP	A
        CFI R3 A
        CFI CFA_SP SP+-7
        MOV	R3,A
        CFI R3 SameValue
        POP	A
        CFI R2 A
        CFI CFA_SP SP+-6
        MOV	R2,A
        CFI R2 SameValue
        POP	A
        CFI R1 A
        CFI CFA_SP SP+-5
        MOV	R1,A
        CFI R1 SameValue
        POP	A
        CFI R0 A
        CFI CFA_SP SP+-4
        MOV	R0,A
        CFI R0 SameValue
        POP	PSW
        CFI PSW SameValue
        CFI CFA_SP SP+-3
        POP	A
        CFI A SameValue
        CFI CFA_SP SP+-2
        RETI
        CFI EndBlock cfiBlock1
//  107 
//  108 
//  109 /******************************************************************************
//  110 *
//  111 * Send packet contains x, y, z
//  112 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  113 void SendPosition(WORD destAddr){
SendPosition:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function SendPosition
        FUNCALL SendPosition, DataRequest
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 6, STACK
        ARGFRAME ISTACK, 2, STACK
        ARGFRAME XSTACK, 6, 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: 6
        MOV	A,#-0x6
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 6)
//  114    BYTE data[PACKET_INDEX_Z + 1];
//  115 
//  116    if (nodeType == REF_NODE){
        MOV	DPTR,#nodeType
        MOVX	A,@DPTR
        JNZ	??SendPosition_0
//  117       data[PACKET_INDEX_TYPE] = PACKET_TYPE_REF_NODE_POSITION;
        MOV	A,#0x12
        SJMP	??SendPosition_1
//  118    }
//  119    else{
//  120       data[PACKET_INDEX_TYPE] = PACKET_TYPE_BLIND_NODE_POSITION;
??SendPosition_0:
        MOV	A,#0x10
??SendPosition_1:
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOVX	@DPTR,A
//  121    }
//  122 
//  123    data[PACKET_INDEX_X_H] = HIBYTE(x);
        MOV	DPTR,#(x + 1)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x1
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  124    data[PACKET_INDEX_X_L] = LOBYTE(x);
        MOV	DPTR,#x
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  125    data[PACKET_INDEX_Y_H] = HIBYTE(y);
        MOV	DPTR,#(y + 1)
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x3
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  126    data[PACKET_INDEX_Y_L] = LOBYTE(y);
        MOV	DPTR,#y
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x4
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  127    data[PACKET_INDEX_Z]   = z;
        MOV	DPTR,#z
        MOVX	A,@DPTR
        PUSH	A
        CFI CFA_SP SP+-6
        MOV	A,#0x5
        LCALL	?XSTACK_DISP0_8
        POP	A
        CFI CFA_SP SP+-5
        MOVX	@DPTR,A
//  128 
//  129    DataRequest(destAddr, PACKET_INDEX_Z + 1, data);
        ; Setup parameters for call to function DataRequest
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	R4,DPL
        MOV	R5,DPH
        MOV	R1,#0x6
        MOV	DPTR,#(DataRequest & 0xffff)
        MOV	A,#((DataRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  130 }
        MOV	A,#0x6
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 XSP16+0
        POP	DPH
        CFI DPH0 SameValue
        CFI CFA_SP SP+-4
        POP	DPL
        CFI DPL0 SameValue
        CFI CFA_SP SP+-3
        LJMP	?BRET
        CFI EndBlock cfiBlock2
//  131 
//  132 /******************************************************************************
//  133 *
//  134 * Send a text string to the PC interface, input as printf.
//  135 * The string will be shown in the packet sniffer.
//  136 ******************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  137 void SendText(char *format, ...){
SendText:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function SendText
        FUNCALL SendText, vsprintf
        LOCFRAME XSTACK, 142, STACK
        ARGFRAME XSTACK, 142, STACK
        FUNCALL SendText, DataRequest
        LOCFRAME XSTACK, 140, STACK
        ARGFRAME XSTACK, 140, STACK
        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: 130
        MOV	A,#0x7e
        LCALL	?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 140)
//  138    BYTE sendBuffer[128];
//  139    va_list ap;
//  140    UINT8 nbrOfChars;
//  141 
//  142    va_start(ap, format);
        MOV	A,#-0x74
        LCALL	?XSTACK_DISP0_8
        MOV	R0,DPL
        MOV	R1,DPH
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	A,R0
        MOVX	@DPTR,A
        INC	DPTR
        MOV	A,R1
        MOVX	@DPTR,A
//  143    // vsprintf is a variant of sprintf which taking a va_list as arguemnt */
//  144    nbrOfChars = vsprintf((char*)&sendBuffer[2], format, ap);
        ; Setup parameters for call to function vsprintf
        MOV	DPL,?XSP + 0
        MOV	DPH,?XSP + 1
        MOV	?V0 + 0,DPL
        MOV	?V0 + 1,DPH
        MOV	R0,#?V0 + 0
        LCALL	?PUSH_XSTACK_I_TWO
        CFI CFA_XSP16 add(XSP16, 142)
        MOV	A,R2
        MOV	R4,A
        MOV	A,R3
        MOV	R5,A
        MOV	A,#0x6
        LCALL	?XSTACK_DISP0_8
        MOV	R2,DPL
        MOV	R3,DPH
        MOV	DPTR,#(vsprintf & 0xffff)
        MOV	A,#((vsprintf >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,#0x2
        LCALL	?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 140)
//  145    va_end(ap);
//  146 
//  147    sendBuffer[0] = PACKET_TYPE_DEBUG_TEXT;
        MOV	A,#0x2
        LCALL	?XSTACK_DISP0_8
        MOV	A,#0x30
        MOVX	@DPTR,A
//  148    sendBuffer[1] = nbrOfChars + 1;

⌨️ 快捷键说明

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