📄 mac_mcu.s51
字号:
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
PUSH A
CFI CFA_SP SP+-1
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
MOV A,#0x3
LCALL ?XSTACK_DISP0_8
CLR A
LCALL ??Subroutine0_0 & 0xFFFF
??CrossCallReturnLabel_4:
LCALL ?L_MOV_X
MOV R2,?V0 + 0
MOV R3,?V0 + 1
MOV R4,?V0 + 2
MOV R5,?V0 + 3
??Subroutine5_0:
MOV A,#0x4
LCALL ?DEALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 12)
MOV R7,#0x4
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock7
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
CFI Block cfiCond8 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_2
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond9 Using cfiCommon0
CFI (cfiCond9) NoFunction
CFI (cfiCond9) Conditional ??CrossCallReturnLabel_3
CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond9) CFA_SP SP+0
CFI (cfiCond9) CFA_XSP16 add(XSP16, 16)
CFI Block cfiPicker10 Using cfiCommon1
CFI (cfiPicker10) NoFunction
CFI (cfiPicker10) Picker
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
CFI Block cfiCond11 Using cfiCommon0
CFI (cfiCond11) NoFunction
CFI (cfiCond11) Conditional ??CrossCallReturnLabel_4
CFI (cfiCond11) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond11) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond11) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond11) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond11) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond11) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond11) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond11) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond11) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond11) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond11) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond11) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond11) CFA_SP SP+0
CFI (cfiCond11) CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond12 Using cfiCommon0
CFI (cfiCond12) NoFunction
CFI (cfiCond12) Conditional ??CrossCallReturnLabel_4
CFI (cfiCond12) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond12) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond12) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond12) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond12) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond12) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond12) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond12) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond12) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond12) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond12) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond12) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond12) CFA_SP SP+0
CFI (cfiCond12) CFA_XSP16 add(XSP16, 16)
??Subroutine0_0:
MOVX @DPTR,A
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOV R0,#?V0 + 0
RET
CFI EndBlock cfiCond8
CFI EndBlock cfiCond9
CFI EndBlock cfiPicker10
CFI EndBlock cfiCond11
CFI EndBlock cfiCond12
// 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.
// 411 *
// 412 * @param count - overflow count compare value
// 413 *
// 414 * @return none
// 415 **************************************************************************************************
// 416 */
RSEG BANKED_CODE:CODE:NOROOT(0)
// 417 void macMcuOverflowSetCompare(uint32 count)
macMcuOverflowSetCompare:
CFI Block cfiBlock13 Using cfiCommon0
CFI Function macMcuOverflowSetCompare
// 418 {
FUNCALL macMcuOverflowSetCompare, halAssertHandler
LOCFRAME XSTACK, 16, STACK
ARGFRAME XSTACK, 16, STACK
MOV A,#-0xc
LCALL ?BANKED_ENTER_XDATA
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 12)
; Saved register size: 12
; Auto size: 4
MOV A,#-0x4
LCALL ?ALLOC_XSTACK8
CFI CFA_XSP16 add(XSP16, 16)
LCALL ?Subroutine0 & 0xFFFF
// 419 halIntState_t s;
// 420 uint8 imBits;
// 421
// 422 MAC_ASSERT(!((count >> 16) & ~PEROF2_BITS)); /* illegal count value */
??CrossCallReturnLabel_3:
LCALL ?L_MOV_X
MOV A,#0x10
MOV R0,#?V0 + 0
LCALL ?UL_SHR
LCALL ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_1:
JNZ ??macMcuOverflowSetCompare_0
MOV A,R1
??macMcuOverflowSetCompare_0:
JZ ??macMcuOverflowSetCompare_1
; Setup parameters for call to function halAssertHandler
MOV DPTR,#(halAssertHandler & 0xffff)
MOV A,#((halAssertHandler >> 16) & 0xff)
LCALL ?BCALL ; Banked call to: DPTR()
// 423
// 424 HAL_ENTER_CRITICAL_SECTION(s);
??macMcuOverflowSetCompare_1:
MOV C,0xa8.7
CLR A
MOV 0xE0 /* A */.0,C
MOV R2,A
CLR 0xa8.7
// 425
// 426 /* remember value of interrupt mask bits, allows OFCMPIM bit to be restored later */
// 427 imBits = T2PEROF2 & ~PEROF2_BITS;
MOV A,#-0x10
ANL A,0x9e
MOV R3,A
// 428
// 429 /*
// 430 * Disable overflow compare interrupts. (It is OK to write zero to compare part of
// 431 * this register. Interrupts are disabled and the new value will be written and the
// 432 * interrupt flag cleared before interrupts are re-enabled.)
// 433 */
// 434 T2PEROF2 = imBits & ~OFCMPIM;
MOV A,#-0x21
ANL A,R3
MOV R4,A
MOV 0x9e,R4
// 435 T2PEROF2 = imBits & ~OFCMPIM; /* writing twice is chip bug workaround */
MOV 0x9e,R4
// 436
// 437 /* for efficiency, the 32-bit value is decoded using endian abstracted indexing */
// 438 T2PEROF0 = ((uint8 *)&count)[UINT32_NDX0];
MOV DPL,?XSP + 0
MOV DPH,?XSP + 1
MOVX A,@DPTR
MOV 0x9c,A
// 439 T2PEROF1 = ((uint8 *)&count)[UINT32_NDX1];
MOV A,#0x1
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV 0x9d,A
// 440
// 441 /* see declaration of this shadow variable for more information */
// 442 shadowPerof2 = ((uint8 *)&count)[UINT32_NDX2];
MOV A,#0x2
LCALL ?XSTACK_DISP0_8
MOVX A,@DPTR
MOV DPTR,#??shadowPerof2
MOVX @DPTR,A
// 443
// 444 /* write the compare value part of T2PEROF2 without re-enabling overflow compare interrupts */
// 445 T2PEROF2 = (imBits & ~OFCMPIM) | shadowPerof2;
ORL A,R4
MOV R4,A
MOV 0x9e,R4
// 446 T2PEROF2 = (imBits & ~OFCMPIM) | shadowPerof2; /* writing twice is chip bug workaround */
MOV 0x9e,R4
// 447
// 448 /*
// 449 * Now that new compare value is stored, clear the interrupt flag. This is important just
// 450 * in case a false match was generated as the multi-byte compare value was written.
// 451 */
// 452 T2CNF = T2CNF_BASE_VALUE | (~OFCMPIF & T2CNF_IF_BITS);
MOV 0xc3,#-0x3d
// 453
// 454 /* re-enable overflow compare interrupts if they were previously enabled */
// 455 T2PEROF2 = imBits | shadowPerof2;
MOVX A,@DPTR
ORL A,R3
MOV R3,A
MOV 0x9e,R3
// 456 T2PEROF2 = imBits | shadowPerof2; /* writing twice is chip bug workaround */
MOV 0x9e,R3
// 457
// 458 HAL_EXIT_CRITICAL_SECTION(s);
MOV A,R2
MOV C,0xE0 /* A */.0
MOV 0xa8.7,C
// 459 }
LJMP ??Subroutine5_0 & 0xFFFF
CFI EndBlock cfiBlock13
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
CFI Block cfiCond14 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_0
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 16)
CFI Block cfiCond15 Using cfiCommon0
CFI (cfiCond15) NoFunction
CFI (cfiCond15) Conditional ??CrossCallReturnLabel_1
CFI (cfiCond15) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond15) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond15) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond15) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond15) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond15) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond15) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond15) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond15) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond15) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond15) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond15) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond15) CFA_SP SP+0
CFI (cfiCond15) CFA_XSP16 add(XSP16, 16)
CFI Block cfiPicker16 Using cfiCommon1
CFI (cfiPicker16) NoFunction
CFI (cfiPicker16) Picker
MOV A,#-0x10
ANL A,?V0 + 0
MOV R0,A
MOV A,#-0x1
ANL A,?V0 + 1
MOV R1,A
MOV A,R0
RET
CFI EndBlock cfiCond14
CFI EndBlock cfiCond15
CFI EndBlock cfiPicker16
// 460
// 461
// 462 /**************************************************************************************************
// 463 * @fn macMcuTimer2Isr
// 464 *
// 465 * @brief
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -