📄 mac_loc.lst
字号:
258 * Note, however, that:
259 * - No more incoming packets will be processed until this function has
260 * returned, in fact all mechanisms except beacon handling and already
261 * scheduled transmissions will be halted.
262 * - One slot in the RX packet pool will be occupied.
263 *
264 * PARAMETERS:
265 * MCPS_DATA_INDICATION *pMDI
266 * A pointer to the structure containing the received packet
267 *
268 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
269 ROOT void mcpsDataIndication(MCPS_DATA_INDICATION *pMDI)
\ mcpsDataIndication:
270 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
271 NodeDataIndication(pMDI);
\ 000004 ; Setup parameters for call to function NodeDataIndication
\ 000004 90.... MOV DPTR,#(NodeDataIndication & 0xffff)
\ 000007 74.. MOV A,#((NodeDataIndication >> 16) & 0xff)
\ 000009 12.... LCALL ?BCALL ; Banked call to: DPTR()
272 }
\ 00000C 80.. SJMP ??Subroutine0_0
\ In segment NEAR_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 F0 MOVX @DPTR,A
\ ??Subroutine0_0:
\ 000001 D083 POP DPH
\ 000003 D082 POP DPL
\ 000005 22 RET
273
274
275 /******************************************************************************
276 *
277 * DESCRIPTION:
278 * mcpsDataConfirm is called by the MAC layer when a packet transmission
279 * initiated by mcpsDataRequest(...) has succeeded or failed.
280 *
281 * PARAMETERS:
282 * MAC_ENUM status
283 * The data confirm status.
284 * BYTE msduHandle
285 * The handle of the confirmed frame
286 *
287 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
288 ROOT void mcpsDataConfirm(MAC_ENUM status, BYTE msduHandle)
\ mcpsDataConfirm:
289 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
290 dataConfirmStatus = status;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#dataConfirmStatus
\ 000008 F0 MOVX @DPTR,A
291 dataConfirmMsduHandle = msduHandle;
\ 000009 EA MOV A,R2
\ 00000A 90.... MOV DPTR,#dataConfirmMsduHandle
\ 00000D 80.. SJMP ?Subroutine0
292 }
293
294 /******************************************************************************
295 *
296 ******************************************************************************/
\ In segment NEAR_CODE, align 1, keep-with-next
297 ROOT void mlmePollConfirm(MAC_ENUM status)
\ mlmePollConfirm:
298 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
299 pollConfirmStatus = status;
\ 000004 E9 MOV A,R1
\ 000005 90.... MOV DPTR,#pollConfirmStatus
\ 000008 80.. SJMP ?Subroutine0
300 }
301
302
303 /******************************************************************************
304 *
305 * This function return the IEEE address written to FLASH.
306 ******************************************************************************/
307 #define IEEE_ADDRESS_ARRAY 0xFFF8
\ In segment NEAR_CODE, align 1, keep-with-next
308 ROOT void FetchIeeeAddress(unsigned char *ieeeAddress)
\ FetchIeeeAddress:
309 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
310 unsigned char bank;
311
312 bank = MEMCTR;
\ 000004 E5C7 MOV A,0xc7
\ 000006 FC MOV R4,A
313
314 // switch to bank 3
315 MEMCTR |= 0x30;
\ 000007 43C730 ORL 0xc7,#0x30
\ 00000A E5C7 MOV A,0xc7
316
317 ieeeAddress[0] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 0);
\ 00000C 90FFF8 MOV DPTR,#-0x8
\ 00000F E4 CLR A
\ 000010 93 MOVC A,@A+DPTR
\ 000011 8A82 MOV DPL,R2
\ 000013 8B83 MOV DPH,R3
\ 000015 F0 MOVX @DPTR,A
318 ieeeAddress[1] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 1);
\ 000016 90FFF9 MOV DPTR,#-0x7
\ 000019 E4 CLR A
\ 00001A 93 MOVC A,@A+DPTR
\ 00001B 8A82 MOV DPL,R2
\ 00001D 8B83 MOV DPH,R3
\ 00001F A3 INC DPTR
\ 000020 F0 MOVX @DPTR,A
319 ieeeAddress[2] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 2);
\ 000021 90FFFA MOV DPTR,#-0x6
\ 000024 E4 CLR A
\ 000025 93 MOVC A,@A+DPTR
\ 000026 8A82 MOV DPL,R2
\ 000028 8B83 MOV DPH,R3
\ 00002A A3 INC DPTR
\ 00002B A3 INC DPTR
\ 00002C F0 MOVX @DPTR,A
320 ieeeAddress[3] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 3);
\ 00002D 90FFFB MOV DPTR,#-0x5
\ 000030 E4 CLR A
\ 000031 93 MOVC A,@A+DPTR
\ 000032 8A82 MOV DPL,R2
\ 000034 8B83 MOV DPH,R3
\ 000036 A3 INC DPTR
\ 000037 A3 INC DPTR
\ 000038 A3 INC DPTR
\ 000039 F0 MOVX @DPTR,A
321 ieeeAddress[4] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 4);
\ 00003A 90FFFC MOV DPTR,#-0x4
\ 00003D E4 CLR A
\ 00003E 93 MOVC A,@A+DPTR
\ 00003F 8A82 MOV DPL,R2
\ 000041 8B83 MOV DPH,R3
\ 000043 A3 INC DPTR
\ 000044 A3 INC DPTR
\ 000045 A3 INC DPTR
\ 000046 A3 INC DPTR
\ 000047 F0 MOVX @DPTR,A
322 ieeeAddress[5] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 5);
\ 000048 90FFFD MOV DPTR,#-0x3
\ 00004B E4 CLR A
\ 00004C 93 MOVC A,@A+DPTR
\ 00004D 8A82 MOV DPL,R2
\ 00004F 8B83 MOV DPH,R3
\ 000051 A3 INC DPTR
\ 000052 A3 INC DPTR
\ 000053 A3 INC DPTR
\ 000054 A3 INC DPTR
\ 000055 A3 INC DPTR
\ 000056 F0 MOVX @DPTR,A
323 ieeeAddress[6] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 6);
\ 000057 90FFFE MOV DPTR,#-0x2
\ 00005A E4 CLR A
\ 00005B 93 MOVC A,@A+DPTR
\ 00005C 8A82 MOV DPL,R2
\ 00005E 8B83 MOV DPH,R3
\ 000060 A3 INC DPTR
\ 000061 A3 INC DPTR
\ 000062 A3 INC DPTR
\ 000063 A3 INC DPTR
\ 000064 A3 INC DPTR
\ 000065 A3 INC DPTR
\ 000066 F0 MOVX @DPTR,A
324 ieeeAddress[7] = *(unsigned char __code *)(IEEE_ADDRESS_ARRAY + 7);
\ 000067 90FFFF MOV DPTR,#-0x1
\ 00006A E4 CLR A
\ 00006B 93 MOVC A,@A+DPTR
\ 00006C 8A82 MOV DPL,R2
\ 00006E 8B83 MOV DPH,R3
\ 000070 A3 INC DPTR
\ 000071 A3 INC DPTR
\ 000072 A3 INC DPTR
\ 000073 A3 INC DPTR
\ 000074 A3 INC DPTR
\ 000075 A3 INC DPTR
\ 000076 A3 INC DPTR
\ 000077 F0 MOVX @DPTR,A
325
326 // restore old bank settings
327 MEMCTR = bank;
\ 000078 8CC7 MOV 0xc7,R4
328 }
\ 00007A 02.... LJMP ??Subroutine0_0
329
330 /******************************************************************************
331 *
332 ******************************************************************************/
\ In segment BANKED_CODE, align 1, keep-with-next
333 void DataRequest(WORD a, UINT8 length, BYTE* pMsdu){
\ DataRequest:
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 8
\ 000005 74F8 MOV A,#-0x8
\ 000007 12.... LCALL ?ALLOC_XSTACK8
334 ADDRESS dest;
335 dest.Short = a;
\ 00000A 85..82 MOV DPL,?XSP + 0
\ 00000D 85..83 MOV DPH,?XSP + 1
\ 000010 EA MOV A,R2
\ 000011 F0 MOVX @DPTR,A
\ 000012 A3 INC DPTR
\ 000013 EB MOV A,R3
\ 000014 F0 MOVX @DPTR,A
336 dataConfirmStatus = INVALID_STATUS;
\ 000015 7480 MOV A,#-0x80
\ 000017 90.... MOV DPTR,#dataConfirmStatus
\ 00001A F0 MOVX @DPTR,A
337 msduHandle = 1;
\ 00001B 7401 MOV A,#0x1
\ 00001D 90.... MOV DPTR,#msduHandle
\ 000020 F0 MOVX @DPTR,A
338
339 // Broadcasted messages and messages sent to PC should not be ack'ed
340 if(a == BROADCAST_ADDR || a == PC_SHORT){
\ 000021 74FF MOV A,#-0x1
\ 000023 6A XRL A,R2
\ 000024 7003 JNZ ??DataRequest_0
\ 000026 74FF MOV A,#-0x1
\ 000028 6B XRL A,R3
\ ??DataRequest_0:
\ 000029 600A JZ ??DataRequest_1
\ 00002B 7434 MOV A,#0x34
\ 00002D 6A XRL A,R2
\ 00002E 7003 JNZ ??DataRequest_2
\ 000030 7412 MOV A,#0x12
\ 000032 6B XRL A,R3
\ ??DataRequest_2:
\ 000033 7003 JNZ ??DataRequest_3
341 txOptions = TX_OPT_NONE;
\ ??DataRequest_1:
\ 000035 E4 CLR A
\ 000036 8002 SJMP ??DataRequest_4
342 }
343 else{
344 txOptions = TX_OPT_ACK_REQ;
\ ??DataRequest_3:
\ 000038 7401 MOV A,#0x1
\ ??DataRequest_4:
\ 00003A 90.... MOV DPTR,#txOptions
\ 00003D F0 MOVX @DPTR,A
345 }
346
347 mcpsDataRequest(SRC_ADDR_SHORT | DEST_ADDR_SHORT,
348 panId,
349 (ADDRESS *) &myShortAddr,
350 panId,
351 &dest,
352 length,
353 pMsdu,
354 msduHandle,
355 txOptions);
\ 00003E ; Setup parameters for call to function mcpsDataRequest
\ 00003E E0 MOVX A,@DPTR
\ 00003F F5.. MOV ?V0 + 0,A
\ 000041 78.. MOV R0,#?V0 + 0
\ 000043 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 000046 75..01 MOV ?V0 + 0,#0x1
\ 000049 78.. MOV R0,#?V0 + 0
\ 00004B 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 00004E 8C.. MOV ?V0 + 0,R4
\ 000050 8D.. MOV ?V0 + 1,R5
\ 000052 78.. MOV R0,#?V0 + 0
\ 000054 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 000057 E9 MOV A,R1
\ 000058 F5.. MOV ?V0 + 0,A
\ 00005A 78.. MOV R0,#?V0 + 0
\ 00005C 12.... LCALL ?PUSH_XSTACK_I_ONE
\ 00005F 7405 MOV A,#0x5
\ 000061 12.... LCALL ?XSTACK_DISP0_8
\ 000064 8582.. MOV ?V0 + 0,DPL
\ 000067 8583.. MOV ?V0 + 1,DPH
\ 00006A 78.. MOV R0,#?V0 + 0
\ 00006C 12.... LCALL ?PUSH_XSTACK_I_TWO
\ 00006F 90.... MOV DPTR,#panId
\ 000072 12.... LCALL ?PUSH_XSTACK8_X_TWO
\ 000075 7C.. MOV R4,#(myShortAddr & 0xff)
\ 000077 7D.. MOV R5,#((myShortAddr >> 8) & 0xff)
\ 000079 90.... MOV DPTR,#panId
\ 00007C E0 MOVX A,@DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -