📄 node.lst
字号:
\ ??NodeDataIndication_2:
\ 000040 7401 MOV A,#0x1
\ 000042 90.... MOV DPTR,#blinkLed
\ 000045 8031 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:
\ 000047 90.... MOV DPTR,#buffer
\ 00004A E0 MOVX A,@DPTR
\ 00004B 702C JNZ ??NodeDataIndication_3
84 msgReceived = TRUE;
\ 00004D 7401 MOV A,#0x1
\ 00004F 90.... MOV DPTR,#msgReceived
\ 000052 F0 MOVX @DPTR,A
85 memcpy(&buffer.b, pMDI, sizeof(MCPS_DATA_INDICATION));
\ 000053 ; Setup parameters for call to function memcpy
\ 000053 75..90 MOV ?V0 + 0,#-0x70
\ 000056 75..00 MOV ?V0 + 1,#0x0
\ 000059 78.. MOV R0,#?V0 + 0
\ 00005B 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00005E EA MOV A,R2
\ 00005F FC MOV R4,A
\ 000060 EB MOV A,R3
\ 000061 FD MOV R5,A
\ 000062 7A.. MOV R2,#((buffer + 1) & 0xff)
\ 000064 7B.. MOV R3,#(((buffer + 1) >> 8) & 0xff)
\ 000066 90.... MOV DPTR,#(memcpy & 0xffff)
\ 000069 74.. MOV A,#((memcpy >> 16) & 0xff)
\ 00006B 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00006E 7402 MOV A,#0x2
\ 000070 12.... LCALL ?DEALLOC_XSTACK8
86 SET_BUFFER_FILLED();
\ 000073 7401 MOV A,#0x1
\ 000075 90.... MOV DPTR,#buffer
\ ??NodeDataIndication_6:
\ 000078 F0 MOVX @DPTR,A
87 }
88 break;
89 default:
90 break;
91 }
92 }
\ ??NodeDataIndication_3:
\ 000079 02.... LJMP ??Subroutine0_0 & 0xFFFF
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 12.... LCALL ?DEALLOC_XSTACK8
\ ??Subroutine0_0:
\ 000003 7F02 MOV R7,#0x2
\ 000005 02.... LJMP ?BANKED_LEAVE_XDATA
93
94 /******************************************************************************
95 *
96 * Sleep timer interrupt handler
97 ******************************************************************************/
98 #pragma vector=ST_VECTOR
\ In segment NEAR_CODE, align 1, keep-with-next
99 __near_func __interrupt void ST_IRQ(void){
\ ST_IRQ:
\ 000000 C0E0 PUSH A
\ 000002 C0D0 PUSH PSW
\ 000004 E8 MOV A,R0
\ 000005 C0E0 PUSH A
\ 000007 E9 MOV A,R1
\ 000008 C0E0 PUSH A
\ 00000A EA MOV A,R2
\ 00000B C0E0 PUSH A
\ 00000D EB MOV A,R3
\ 00000E C0E0 PUSH A
\ 000010 EC MOV A,R4
\ 000011 C0E0 PUSH A
\ 000013 ED MOV A,R5
\ 000014 C0E0 PUSH A
\ 000016 C082 PUSH DPL
\ 000018 C083 PUSH DPH
\ 00001A C0F0 PUSH B
\ 00001C ; Saved register size: 11
\ 00001C ; Auto size: 0
100 if (nodeType == REF_NODE){
\ 00001C 90.... MOV DPTR,#nodeType
\ 00001F E0 MOVX A,@DPTR
\ 000020 7007 JNZ ??ST_IRQ_0
101 ST_IRQ_RefNode();
\ 000022 ; Setup parameters for call to function ST_IRQ_RefNode
\ 000022 90.... MOV DPTR,#(ST_IRQ_RefNode & 0xffff)
\ 000025 74.. MOV A,#((ST_IRQ_RefNode >> 16) & 0xff)
\ 000027 8005 SJMP ??ST_IRQ_1
102 }
103 else{
104 ST_IRQ_BlindNode();
\ ??ST_IRQ_0:
\ 000029 ; Setup parameters for call to function ST_IRQ_BlindNode
\ 000029 90.... MOV DPTR,#(ST_IRQ_BlindNode & 0xffff)
\ 00002C 74.. MOV A,#((ST_IRQ_BlindNode >> 16) & 0xff)
\ ??ST_IRQ_1:
\ 00002E 12.... LCALL ?BCALL ; Banked call to: DPTR()
105 }
106 }
\ 000031 D0F0 POP B
\ 000033 D083 POP DPH
\ 000035 D082 POP DPL
\ 000037 D0E0 POP A
\ 000039 FD MOV R5,A
\ 00003A D0E0 POP A
\ 00003C FC MOV R4,A
\ 00003D D0E0 POP A
\ 00003F FB MOV R3,A
\ 000040 D0E0 POP A
\ 000042 FA MOV R2,A
\ 000043 D0E0 POP A
\ 000045 F9 MOV R1,A
\ 000046 D0E0 POP A
\ 000048 F8 MOV R0,A
\ 000049 D0D0 POP PSW
\ 00004B D0E0 POP A
\ 00004D 32 RETI
107
108
109 /******************************************************************************
110 *
111 * Send packet contains x, y, z
112 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
113 void SendPosition(WORD destAddr){
\ SendPosition:
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 6
\ 000004 74FA MOV A,#-0x6
\ 000006 12.... LCALL ?ALLOC_XSTACK8
114 BYTE data[PACKET_INDEX_Z + 1];
115
116 if (nodeType == REF_NODE){
\ 000009 90.... MOV DPTR,#nodeType
\ 00000C E0 MOVX A,@DPTR
\ 00000D 7004 JNZ ??SendPosition_0
117 data[PACKET_INDEX_TYPE] = PACKET_TYPE_REF_NODE_POSITION;
\ 00000F 7412 MOV A,#0x12
\ 000011 8002 SJMP ??SendPosition_1
118 }
119 else{
120 data[PACKET_INDEX_TYPE] = PACKET_TYPE_BLIND_NODE_POSITION;
\ ??SendPosition_0:
\ 000013 7410 MOV A,#0x10
\ ??SendPosition_1:
\ 000015 85..82 MOV DPL,?XSP + 0
\ 000018 85..83 MOV DPH,?XSP + 1
\ 00001B F0 MOVX @DPTR,A
121 }
122
123 data[PACKET_INDEX_X_H] = HIBYTE(x);
\ 00001C 90.... MOV DPTR,#(x + 1)
\ 00001F E0 MOVX A,@DPTR
\ 000020 C0E0 PUSH A
\ 000022 7401 MOV A,#0x1
\ 000024 12.... LCALL ?XSTACK_DISP0_8
\ 000027 D0E0 POP A
\ 000029 F0 MOVX @DPTR,A
124 data[PACKET_INDEX_X_L] = LOBYTE(x);
\ 00002A 90.... MOV DPTR,#x
\ 00002D E0 MOVX A,@DPTR
\ 00002E C0E0 PUSH A
\ 000030 7402 MOV A,#0x2
\ 000032 12.... LCALL ?XSTACK_DISP0_8
\ 000035 D0E0 POP A
\ 000037 F0 MOVX @DPTR,A
125 data[PACKET_INDEX_Y_H] = HIBYTE(y);
\ 000038 90.... MOV DPTR,#(y + 1)
\ 00003B E0 MOVX A,@DPTR
\ 00003C C0E0 PUSH A
\ 00003E 7403 MOV A,#0x3
\ 000040 12.... LCALL ?XSTACK_DISP0_8
\ 000043 D0E0 POP A
\ 000045 F0 MOVX @DPTR,A
126 data[PACKET_INDEX_Y_L] = LOBYTE(y);
\ 000046 90.... MOV DPTR,#y
\ 000049 E0 MOVX A,@DPTR
\ 00004A C0E0 PUSH A
\ 00004C 7404 MOV A,#0x4
\ 00004E 12.... LCALL ?XSTACK_DISP0_8
\ 000051 D0E0 POP A
\ 000053 F0 MOVX @DPTR,A
127 data[PACKET_INDEX_Z] = z;
\ 000054 90.... MOV DPTR,#z
\ 000057 E0 MOVX A,@DPTR
\ 000058 C0E0 PUSH A
\ 00005A 7405 MOV A,#0x5
\ 00005C 12.... LCALL ?XSTACK_DISP0_8
\ 00005F D0E0 POP A
\ 000061 F0 MOVX @DPTR,A
128
129 DataRequest(destAddr, PACKET_INDEX_Z + 1, data);
\ 000062 ; Setup parameters for call to function DataRequest
\ 000062 85..82 MOV DPL,?XSP + 0
\ 000065 85..83 MOV DPH,?XSP + 1
\ 000068 AC82 MOV R4,DPL
\ 00006A AD83 MOV R5,DPH
\ 00006C 7906 MOV R1,#0x6
\ 00006E 90.... MOV DPTR,#(DataRequest & 0xffff)
\ 000071 74.. MOV A,#((DataRequest >> 16) & 0xff)
\ 000073 12.... LCALL ?BCALL ; Banked call to: DPTR()
130 }
\ 000076 7406 MOV A,#0x6
\ 000078 12.... LCALL ?DEALLOC_XSTACK8
\ 00007B D083 POP DPH
\ 00007D D082 POP DPL
\ 00007F 02.... LJMP ?BRET
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 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
137 void SendText(char *format, ...){
\ SendText:
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 130
\ 000005 747E MOV A,#0x7e
\ 000007 12.... LCALL ?ALLOC_XSTACK8
138 BYTE sendBuffer[128];
139 va_list ap;
140 UINT8 nbrOfChars;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -