📄 mac_timer.lst
字号:
\ 000005 ; Saved register size: 15
\ 000005 ; Auto size: 0
\ 000005 EA MOV A,R2
\ 000006 FE MOV R6,A
\ 000007 EB MOV A,R3
\ 000008 FF MOV R7,A
245
246 // Adjust the timestamp for extra 1/4 symbol RX/TX chain delay
247 pTimestamp->counter -= TRANSMITTER_DELAY;
\ 000009 8E82 MOV DPL,R6
\ 00000B 8F83 MOV DPH,R7
\ 00000D E0 MOVX A,@DPTR
\ 00000E 24BB ADD A,#-0x45
\ 000010 F0 MOVX @DPTR,A
\ 000011 A3 INC DPTR
\ 000012 E0 MOVX A,@DPTR
\ 000013 34FF ADDC A,#-0x1
\ 000015 F0 MOVX @DPTR,A
\ 000016 8E82 MOV DPL,R6
\ 000018 8F83 MOV DPH,R7
\ 00001A C3 CLR C
\ 00001B E0 MOVX A,@DPTR
\ 00001C 9400 SUBB A,#0x0
\ 00001E A3 INC DPTR
\ 00001F E0 MOVX A,@DPTR
\ 000020 9400 SUBB A,#0x0
\ 000022 A2D2 MOV C,0xD0 /* PSW */.2
\ 000024 65D0 XRL A,PSW
\ 000026 33 RLC A
\ 000027 5020 JNC ??mtimAlignWithBeacon_0
248 if (pTimestamp->counter < 0) {
249 pTimestamp->counter += TIMER2_BACKOFF_SLOT_COUNTER_VALUE;
\ 000029 8E82 MOV DPL,R6
\ 00002B 8F83 MOV DPH,R7
\ 00002D E0 MOVX A,@DPTR
\ 00002E 2400 ADD A,#0x0
\ 000030 F0 MOVX @DPTR,A
\ 000031 A3 INC DPTR
\ 000032 E0 MOVX A,@DPTR
\ 000033 3428 ADDC A,#0x28
\ 000035 F0 MOVX @DPTR,A
250 pTimestamp->overflowCounter--;
\ 000036 90.... MOV DPTR,#__Constant_ffffffff
\ 000039 78.. MOV R0,#?V0 + 0
\ 00003B 12.... LCALL ?L_MOV_X
\ 00003E 8E82 MOV DPL,R6
\ 000040 8F83 MOV DPH,R7
\ 000042 A3 INC DPTR
\ 000043 A3 INC DPTR
\ 000044 78.. MOV R0,#?V0 + 0
\ 000046 12.... LCALL ?L_ADD_TO_X
251 }
252
253 // Update the MAC timer
254 T2_SET_OVERFLOW_COUNTER(T2_GET_OVERFLOW_COUNTER() - pTimestamp->overflowCounter);
\ ??mtimAlignWithBeacon_0:
\ 000049 ; Setup parameters for call to function T2_GET_OVERFLOW_COUNTER
\ 000049 90.... MOV DPTR,#(T2_GET_OVERFLOW_COUNTER & 0xffff)
\ 00004C 74.. MOV A,#((T2_GET_OVERFLOW_COUNTER >> 16) & 0xff)
\ 00004E 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000051 8E82 MOV DPL,R6
\ 000053 8F83 MOV DPH,R7
\ 000055 A3 INC DPTR
\ 000056 A3 INC DPTR
\ 000057 78.. MOV R0,#?V0 + 4
\ 000059 12.... LCALL ?L_MOV_X
\ 00005C EA MOV A,R2
\ 00005D C3 CLR C
\ 00005E 95.. SUBB A,?V0 + 4
\ 000060 F5A1 MOV 0xa1,A
\ 000062 ; Setup parameters for call to function T2_GET_OVERFLOW_COUNTER
\ 000062 90.... MOV DPTR,#(T2_GET_OVERFLOW_COUNTER & 0xffff)
\ 000065 74.. MOV A,#((T2_GET_OVERFLOW_COUNTER >> 16) & 0xff)
\ 000067 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00006A 8E82 MOV DPL,R6
\ 00006C 8F83 MOV DPH,R7
\ 00006E A3 INC DPTR
\ 00006F A3 INC DPTR
\ 000070 78.. MOV R0,#?V0 + 0
\ 000072 12.... LCALL ?L_MOV_X
\ 000075 EA MOV A,R2
\ 000076 C3 CLR C
\ 000077 95.. SUBB A,?V0 + 0
\ 000079 EB MOV A,R3
\ 00007A 95.. SUBB A,?V0 + 1
\ 00007C F5A2 MOV 0xa2,A
\ 00007E ; Setup parameters for call to function T2_GET_OVERFLOW_COUNTER
\ 00007E 90.... MOV DPTR,#(T2_GET_OVERFLOW_COUNTER & 0xffff)
\ 000081 74.. MOV A,#((T2_GET_OVERFLOW_COUNTER >> 16) & 0xff)
\ 000083 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000086 8A.. MOV ?V0 + 0,R2
\ 000088 8B.. MOV ?V0 + 1,R3
\ 00008A 8C.. MOV ?V0 + 2,R4
\ 00008C 8D.. MOV ?V0 + 3,R5
\ 00008E 8E82 MOV DPL,R6
\ 000090 8F83 MOV DPH,R7
\ 000092 A3 INC DPTR
\ 000093 A3 INC DPTR
\ 000094 78.. MOV R0,#?V0 + 0
\ 000096 12.... LCALL ?L_SUB_X
\ 000099 7410 MOV A,#0x10
\ 00009B 78.. MOV R0,#?V0 + 0
\ 00009D 12.... LCALL ?UL_SHR
\ 0000A0 E5.. MOV A,?V0 + 0
\ 0000A2 F5A3 MOV 0xa3,A
255 T2_SET_COUNTER_DELTA_DELAY(pTimestamp->counter);
\ 0000A4 8E82 MOV DPL,R6
\ 0000A6 8F83 MOV DPH,R7
\ 0000A8 E0 MOVX A,@DPTR
\ 0000A9 F5A6 MOV 0xa6,A
\ 0000AB A3 INC DPTR
\ 0000AC E0 MOVX A,@DPTR
\ 0000AD F5A7 MOV 0xa7,A
256
257 // Update the "CAP is active" indicator (used by the TX engine)
258 T2_SET_OVERFLOW_COUNTER_COMPARE_VALUE(msupCalcCapDuration());
\ 0000AF ; Setup parameters for call to function msupCalcCapDuration
\ 0000AF 12.... LCALL msupCalcCapDuration
\ 0000B2 EA MOV A,R2
\ 0000B3 F59C MOV 0x9c,A
\ 0000B5 ; Setup parameters for call to function msupCalcCapDuration
\ 0000B5 12.... LCALL msupCalcCapDuration
\ 0000B8 EB MOV A,R3
\ 0000B9 F59D MOV 0x9d,A
\ 0000BB E59E MOV A,0x9e
\ 0000BD FE MOV R6,A
\ 0000BE ; Setup parameters for call to function msupCalcCapDuration
\ 0000BE 12.... LCALL msupCalcCapDuration
\ 0000C1 EC MOV A,R4
\ 0000C2 540F ANL A,#0xf
\ 0000C4 C0E0 PUSH A
\ 0000C6 74F0 MOV A,#-0x10
\ 0000C8 5E ANL A,R6
\ 0000C9 FA MOV R2,A
\ 0000CA D0E0 POP A
\ 0000CC 4A ORL A,R2
\ 0000CD F59E MOV 0x9e,A
259 T2_SET_CAP_ACTIVE();
\ 0000CF 53C3DF ANL 0xc3,#0xdf
260
261 } // mtimAlignWithBeacon
\ 0000D2 02.... LJMP ?Subroutine0
262
263
264 //-------------------------------------------------------------------------------------------------------
265 // void mtimStartSync (void)
266 //
267 // DESCRIPTION:
268 // Start Timer2 in synchronous mode. The routine waits until Timer2 has started
269 //-------------------------------------------------------------------------------------------------------
\ In segment NEAR_CODE, align 1, keep-with-next
270 ROOT void mtimStartSync (void)
\ mtimStartSync:
271 {
\ 000000 ; Saved register size: 0
\ 000000 ; Auto size: 0
272 BYTE timer2Started;
273
274 T2_START_SYNC();
\ 000000 43C302 ORL 0xc3,#0x2
\ 000003 43C301 ORL 0xc3,#0x1
275 do
276 {
277 timer2Started = T2CNF & TIMER2_RUN_BM;
\ ??mtimStartSync_0:
\ 000006 E5C3 MOV A,0xc3
\ 000008 A2E0 MOV C,0xE0 /* A */.0
\ 00000A E4 CLR A
\ 00000B 92E0 MOV 0xE0 /* A */.0,C
278 }while (timer2Started == 0);
\ 00000D 60F7 JZ ??mtimStartSync_0
279 }
\ 00000F 22 RET
\ In segment XDATA_I, align 1, keep-with-next
\ __Constant_0:
\ 000000 DS 4
\ 000004 REQUIRE `?<Initializer for __Constant_0>`
\ 000004 REQUIRE __INIT_XDATA_I
\ In segment XDATA_ID, align 1, keep-with-next
\ `?<Initializer for __Constant_0>`:
\ 000000 00000000 DD 0
\ In segment XDATA_I, align 1, keep-with-next
\ __Constant_ffffffff:
\ 000000 DS 4
\ 000004 REQUIRE `?<Initializer for __Constant_ffffffff>`
\ 000004 REQUIRE __INIT_XDATA_I
\ In segment XDATA_ID, align 1, keep-with-next
\ `?<Initializer for __Constant_ffffffff>`:
\ 000000 FFFFFFFF DD 4294967295
\ In segment SFR_AN, at 0xa8
\ union <unnamed> volatile __sfr _A_IEN0
\ _A_IEN0:
\ 000000 DS 1
\ In segment SFR_AN, at 0xc0
\ union <unnamed> volatile __sfr _A_IRCON
\ _A_IRCON:
\ 000000 DS 1
Maximum stack usage in bytes:
Function ISTACK PSTACK XSTACK
-------- ------ ------ ------
mtimAlignWithBeacon 1 0 15
-> T2_GET_OVERFLOW_COUNTER 0 0 30
-> T2_GET_OVERFLOW_COUNTER 0 0 30
-> T2_GET_OVERFLOW_COUNTER 0 0 30
-> msupCalcCapDuration 0 0 30
-> msupCalcCapDuration 0 0 30
-> msupCalcCapDuration 0 0 30
mtimCancelCallback 1 0 12
mtimInit 3 0 0
-> mtimStartSync 4 0 0
mtimSetCallback 1 0 24
mtimStartSync 2 0 0
Segment part sizes:
Function/Label Bytes
-------------- -----
T2CMP 1
T2PEROF0 1
T2PEROF1 1
T2PEROF2 1
T2OF0 1
T2OF1 1
T2OF2 1
T2CAPLPL 1
T2CAPHPH 1
T2TLD 1
T2THD 1
T2CNF 1
pMtimCallbacks 108
mtimInfo 11
firstCallback 1
intAlreadyOff 1
mtimInit 101
mtimSetCallback 430
?Subroutine0 5
mtimCancelCallback 183
mtimAlignWithBeacon 213
mtimStartSync 16
__Constant_0 4
?<Initializer for __Constant_0>
4
__Constant_ffffffff 4
?<Initializer for __Constant_ffffffff>
4
_A_IEN0 1
_A_IRCON 1
2 bytes in segment DATA_Z
948 bytes in segment NEAR_CODE
11 bytes in segment PM0_XDATA
14 bytes in segment SFR_AN
108 bytes in segment XDATA_AN
8 bytes in segment XDATA_I
8 bytes in segment XDATA_ID
948 bytes of CODE memory (+ 8 bytes shared)
2 bytes of DATA memory (+ 14 bytes shared)
11 bytes of XDATA memory (+ 116 bytes shared)
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -