📄 mac_mcu.lst
字号:
309 * @fn macMcuTimerCapture
310 *
311 * @brief Returns the last timer capture. This capture should have occurred at the
312 * receive time of the last frame (the last time SFD transitioned to active).
313 *
314 * @param none
315 *
316 * @return last capture of hardware timer (full 16-bit value)
317 **************************************************************************************************
318 */
\ In segment BANKED_CODE, align 1, keep-with-next
319 uint16 macMcuTimerCapture(void)
\ macMcuTimerCapture:
320 {
\ 000000 ; Saved register size: 2
\ 000000 ; Auto size: 0
321 uint16 timerCapture;
322
323 timerCapture = T2CAPLPL;
\ 000000 AAA4 MOV R2,0xa4
324 timerCapture |= T2CAPHPH << 8;
\ 000002 E5A5 MOV A,0xa5
\ 000004 FB MOV R3,A
325
326 return (timerCapture);
\ 000005 02.... LJMP ?BRET
327 }
328
329
330 /**************************************************************************************************
331 * @fn macMcuOverflowCount
332 *
333 * @brief Returns the value of the overflow counter which is a special hardware feature.
334 * The overflow count actually is only 20 bits of information.
335 *
336 * @param none
337 *
338 * @return value of overflow counter
339 **************************************************************************************************
340 */
\ In segment BANKED_CODE, align 1, keep-with-next
341 uint32 macMcuOverflowCount(void)
\ macMcuOverflowCount:
342 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 4
\ 000005 74FC MOV A,#-0x4
\ 000007 12.... LCALL ?ALLOC_XSTACK8
343 uint32 overflowCount;
344
345 /* for efficiency, the 32-bit value is encoded using endian abstracted indexing */
346
347 /* must read T2OF0 first, this latches T2OF1 and T2OF2 */
348 ((uint8 *)&overflowCount)[UINT32_NDX0] = T2OF0;
\ 00000A E5A1 MOV A,0xa1
\ 00000C 85..82 MOV DPL,?XSP + 0
\ 00000F 85..83 MOV DPH,?XSP + 1
\ 000012 F0 MOVX @DPTR,A
349 ((uint8 *)&overflowCount)[UINT32_NDX1] = T2OF1;
\ 000013 E5A2 MOV A,0xa2
\ 000015 C0E0 PUSH A
\ 000017 7401 MOV A,#0x1
\ 000019 12.... LCALL ?XSTACK_DISP0_8
\ 00001C D0E0 POP A
\ 00001E F0 MOVX @DPTR,A
350 ((uint8 *)&overflowCount)[UINT32_NDX2] = T2OF2;
\ 00001F E5A3 MOV A,0xa3
\ 000021 80.. SJMP ?Subroutine5
351 ((uint8 *)&overflowCount)[UINT32_NDX3] = 0;
352
353 return (overflowCount);
354 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine5:
\ 000000 C0E0 PUSH A
\ 000002 7402 MOV A,#0x2
\ 000004 12.... LCALL ?XSTACK_DISP0_8
\ 000007 D0E0 POP A
\ 000009 F0 MOVX @DPTR,A
\ 00000A 7403 MOV A,#0x3
\ 00000C 12.... LCALL ?XSTACK_DISP0_8
\ 00000F E4 CLR A
\ 000010 12.... LCALL ??Subroutine0_0 & 0xFFFF
\ ??CrossCallReturnLabel_4:
\ 000013 12.... LCALL ?L_MOV_X
\ 000016 AA.. MOV R2,?V0 + 0
\ 000018 AB.. MOV R3,?V0 + 1
\ 00001A AC.. MOV R4,?V0 + 2
\ 00001C AD.. MOV R5,?V0 + 3
\ ??Subroutine5_0:
\ 00001E 7404 MOV A,#0x4
\ 000020 12.... LCALL ?DEALLOC_XSTACK8
\ 000023 7F04 MOV R7,#0x4
\ 000025 02.... LJMP ?BANKED_LEAVE_XDATA
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine0:
\ 000000 85..82 MOV DPL,?XSP + 0
\ 000003 85..83 MOV DPH,?XSP + 1
\ 000006 EA MOV A,R2
\ 000007 F0 MOVX @DPTR,A
\ 000008 A3 INC DPTR
\ 000009 EB MOV A,R3
\ 00000A F0 MOVX @DPTR,A
\ 00000B A3 INC DPTR
\ 00000C EC MOV A,R4
\ 00000D F0 MOVX @DPTR,A
\ 00000E A3 INC DPTR
\ 00000F ED MOV A,R5
\ ??Subroutine0_0:
\ 000010 F0 MOVX @DPTR,A
\ 000011 85..82 MOV DPL,?XSP + 0
\ 000014 85..83 MOV DPH,?XSP + 1
\ 000017 78.. MOV R0,#?V0 + 0
\ 000019 22 RET
355
356
357 /**************************************************************************************************
358 * @fn macMcuOverflowCapture
359 *
360 * @brief Returns the last capture of the overflow counter. A special hardware feature
361 * captures the overflow counter when the regular hardware timer is captured.
362 *
363 * @param none
364 *
365 * @return last capture of overflow count
366 **************************************************************************************************
367 */
\ In segment BANKED_CODE, align 1, keep-with-next
368 uint32 macMcuOverflowCapture(void)
\ macMcuOverflowCapture:
369 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 4
\ 000005 74FC MOV A,#-0x4
\ 000007 12.... LCALL ?ALLOC_XSTACK8
370 uint32 overflowCapture;
371
372 /* for efficiency, the 32-bit value is encoded using endian abstracted indexing */
373
374 ((uint8 *)&overflowCapture)[UINT32_NDX0] = T2PEROF0;
\ 00000A E59C MOV A,0x9c
\ 00000C 85..82 MOV DPL,?XSP + 0
\ 00000F 85..83 MOV DPH,?XSP + 1
\ 000012 F0 MOVX @DPTR,A
375 ((uint8 *)&overflowCapture)[UINT32_NDX1] = T2PEROF1;
\ 000013 E59D MOV A,0x9d
\ 000015 C0E0 PUSH A
\ 000017 7401 MOV A,#0x1
\ 000019 12.... LCALL ?XSTACK_DISP0_8
\ 00001C D0E0 POP A
\ 00001E F0 MOVX @DPTR,A
376 ((uint8 *)&overflowCapture)[UINT32_NDX2] = T2PEROF2 & PEROF2_BITS;
\ 00001F 740F MOV A,#0xf
\ 000021 559E ANL A,0x9e
\ 000023 80.. SJMP ?Subroutine5
377 ((uint8 *)&overflowCapture)[UINT32_NDX3] = 0;
378
379 return (overflowCapture);
380 }
381
382
383 /**************************************************************************************************
384 * @fn macMcuOverflowSetCount
385 *
386 * @brief Sets the value of the hardware overflow counter.
387 *
388 * @param count - new overflow count value
389 *
390 * @return none
391 **************************************************************************************************
392 */
\ In segment BANKED_CODE, align 1, keep-with-next
393 void macMcuOverflowSetCount(uint32 count)
\ macMcuOverflowSetCount:
394 {
\ 000000 74F4 MOV A,#-0xc
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 12
\ 000005 ; Auto size: 4
\ 000005 74FC MOV A,#-0x4
\ 000007 12.... LCALL ?ALLOC_XSTACK8
\ 00000A 12.... LCALL ?Subroutine0 & 0xFFFF
395 MAC_ASSERT(!((count >> 16) & ~PEROF2_BITS)); /* illegal count value */
\ ??CrossCallReturnLabel_2:
\ 00000D 12.... LCALL ?L_MOV_X
\ 000010 7410 MOV A,#0x10
\ 000012 78.. MOV R0,#?V0 + 0
\ 000014 12.... LCALL ?UL_SHR
\ 000017 12.... LCALL ?Subroutine1 & 0xFFFF
\ ??CrossCallReturnLabel_0:
\ 00001A 7001 JNZ ??macMcuOverflowSetCount_0
\ 00001C E9 MOV A,R1
\ ??macMcuOverflowSetCount_0:
\ 00001D 6008 JZ ??macMcuOverflowSetCount_1
\ 00001F ; Setup parameters for call to function halAssertHandler
\ 00001F 90.... MOV DPTR,#(halAssertHandler & 0xffff)
\ 000022 74.. MOV A,#((halAssertHandler >> 16) & 0xff)
\ 000024 12.... LCALL ?BCALL ; Banked call to: DPTR()
396
397 /* for efficiency, the 32-bit value is decoded using endian abstracted indexing */
398
399 /* T2OF2 must be written last */
400 T2OF0 = ((uint8 *)&count)[UINT32_NDX0];
\ ??macMcuOverflowSetCount_1:
\ 000027 85..82 MOV DPL,?XSP + 0
\ 00002A 85..83 MOV DPH,?XSP + 1
\ 00002D E0 MOVX A,@DPTR
\ 00002E F5A1 MOV 0xa1,A
401 T2OF1 = ((uint8 *)&count)[UINT32_NDX1];
\ 000030 7401 MOV A,#0x1
\ 000032 12.... LCALL ?XSTACK_DISP0_8
\ 000035 E0 MOVX A,@DPTR
\ 000036 F5A2 MOV 0xa2,A
402 T2OF2 = ((uint8 *)&count)[UINT32_NDX2];
\ 000038 7402 MOV A,#0x2
\ 00003A 12.... LCALL ?XSTACK_DISP0_8
\ 00003D E0 MOVX A,@DPTR
\ 00003E F5A3 MOV 0xa3,A
403 }
\ 000040 80.. SJMP ??Subroutine5_0
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine1:
\ 000000 74F0 MOV A,#-0x10
\ 000002 55.. ANL A,?V0 + 0
\ 000004 F8 MOV R0,A
\ 000005 74FF MOV A,#-0x1
\ 000007 55.. ANL A,?V0 + 1
\ 000009 F9 MOV R1,A
\ 00000A E8 MOV A,R0
\ 00000B 22 RET
404
405
406 /**************************************************************************************************
407 * @fn macMcuOverflowSetCompare
408 *
409 * @brief Set overflow count compare value. An interrupt is triggered when the overflow
410 * count equals this compare value.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -