📄 mac_mcu.lst
字号:
\ 00000A 02.... LJMP ?BRET
284 }
285
286
287 /**************************************************************************************************
288 * @fn macMcuTimerCount
289 *
290 * @brief Returns the upper eight bits of hardware timer count. The full 16-bit timer
291 * count is not returned because the timer compare feature only compares one byte.
292 *
293 * @param none
294 *
295 * @return upper eight bits of hardware timer count
296 **************************************************************************************************
297 */
\ In segment BANKED_CODE, align 1, keep-with-next
298 uint8 macMcuTimerCount(void)
\ macMcuTimerCount:
299 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 1
\ 000004 74FF MOV A,#-0x1
\ 000006 12.... LCALL ?ALLOC_XSTACK8
300 uint8 volatile temp;
301
302 /* reading T2TLD latches T2THD */
303 temp = T2TLD;
\ 000009 E5A6 MOV A,0xa6
\ 00000B 85..82 MOV DPL,?XSP + 0
\ 00000E 85..83 MOV DPH,?XSP + 1
\ 000011 F0 MOVX @DPTR,A
304 return(T2THD);
\ 000012 A9A7 MOV R1,0xa7
\ 000014 7401 MOV A,#0x1
\ 000016 12.... LCALL ?DEALLOC_XSTACK8
\ 000019 02.... LJMP ?Subroutine3 & 0xFFFF
305 }
306
307
308 /**************************************************************************************************
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -