📄 hal_uart.s51
字号:
CLR 0xE0 /* A */.0
MOVX @DPTR,A
// 342 cfg->txTick = DMA_TX_DLY;
MOV A,R6
ADD A,#0xe
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_34:
MOV A,#0x14
MOVX @DPTR,A
// 343
// 344 if ( (cfg->txMax - cfg->txCnt) < cfg->txTail )
MOV A,R6
ADD A,#0xc
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_16:
MOV R0,A
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_2:
MOV A,R0
CLR C
SUBB A,R2
MOV R0,A
CLR A
SUBB A,#0x0
MOV R1,A
MOV A,R6
ADD A,#0xb
LCALL ??Subroutine2_0 & 0xFFFF
??CrossCallReturnLabel_3:
CLR C
MOV A,R0
SUBB A,R2
MOV A,R1
SUBB A,#0x0
MOV C,0xD0 /* PSW */.2
XRL A,PSW
RLC A
JNC ??pollDMA_14
// 345 {
// 346 cfg->txTail = 0; // DMA can only run to the end of the Tx buffer.
CLR A
??pollDMA_15:
MOVX @DPTR,A
LJMP ??pollDMA_16 & 0xFFFF
// 347 }
// 348 else
// 349 {
// 350 cfg->txTail += cfg->txCnt;
??pollDMA_14:
LCALL ?Subroutine2 & 0xFFFF
??CrossCallReturnLabel_4:
MOV A,R6
ADD A,#0xb
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_17:
ADD A,R2
SJMP ??pollDMA_15
// 351 }
// 352 }
// 353 else if ( !(cfg->flag & UART_CFG_TXF) && !cfg->txTick )
??pollDMA_13:
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_18:
MOV C,0xE0 /* A */.0
JNC $+5
LJMP ??pollDMA_16 & 0xFFFF
MOV A,R6
ADD A,#0xe
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_19:
JZ $+5
LJMP ??pollDMA_16 & 0xFFFF
// 354 {
// 355 if ( cfg->txTail != cfg->txHead )
MOV A,R6
LCALL ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_64:
XRL A,R2
JNZ $+5
LJMP ??pollDMA_16 & 0xFFFF
// 356 {
// 357 if ( cfg->txTail < cfg->txHead )
MOV A,R6
ADD A,#0xb
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_20:
PUSH A
CFI CFA_SP SP+-1
MOV DPL,R6
MOV DPH,R7
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R2,A
POP A
CFI CFA_SP SP+0
CLR C
SUBB A,R2
MOV A,R6
JNC ??pollDMA_17
// 358 {
// 359 cfg->txCnt = cfg->txHead - cfg->txTail;
LCALL ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_65:
CLR C
SUBB A,R2
SJMP ??pollDMA_18
// 360 }
// 361 else // Can only run DMA engine up to max, then restart at zero.
// 362 {
// 363 cfg->txCnt = cfg->txMax - cfg->txTail + 1;
??pollDMA_17:
ADD A,#0xb
LCALL ??Subroutine2_0 & 0xFFFF
??CrossCallReturnLabel_5:
MOV A,R6
ADD A,#0xc
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_21:
CLR C
SUBB A,R2
INC A
??pollDMA_18:
PUSH A
CFI CFA_SP SP+-1
MOV A,R6
ADD A,#0xd
LCALL ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_35:
POP A
CFI CFA_SP SP+0
MOVX @DPTR,A
// 364 }
// 365
// 366 cfg->flag |= UART_CFG_TXF;
LCALL ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_22:
SETB 0xE0 /* A */.0
MOVX @DPTR,A
// 367 DMA_TX( cfg );
MOV A,R6
ADD A,#0x8
MOV R0,A
MOV A,R7
ADDC A,#0x0
MOV R1,A
MOV A,R6
ADD A,#0xb
MOV R2,A
LCALL ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_33:
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
ADD A,R4
INC DPTR
MOVX A,@DPTR
ADDC A,#0x0
MOV DPTR,#(dmaCh1234 + 16)
MOVX @DPTR,A
MOV DPL,R2
MOV DPH,R3
MOVX A,@DPTR
MOV R2,A
MOV DPL,R0
MOV DPH,R1
MOVX A,@DPTR
ADD A,R2
MOV DPTR,#(dmaCh1234 + 17)
MOVX @DPTR,A
MOV A,R6
ADD A,#0xd
LCALL ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_23:
MOV DPTR,#(dmaCh1234 + 21)
MOVX @DPTR,A
MOV DPTR,#(dmaCh1234 + 20)
MOVX A,@DPTR
ANL A,#0xe0
MOVX @DPTR,A
ANL 0xd1,#0xf7
MOV 0xd6,#0x8
MOV 0xd7,#0x8
// 368 }
// 369 }
// 370 }
??pollDMA_16:
MOV A,#0x1
LCALL ?DEALLOC_XSTACK8
CFI EndBlock cfiBlock0
REQUIRE ?Subroutine19
; // Fall through to label ?Subroutine19
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine19:
CFI Block cfiBlock1 Using cfiCommon0
CFI NoFunction
CFI CFA_SP SP+0
CFI CFA_XSP16 add(XSP16, 10)
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V1 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)))
MOV R7,#0x2
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock1
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine7:
CFI Block cfiCond2 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_38
CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI V5 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, 15)
CFI Block cfiCond3 Using cfiCommon0
CFI (cfiCond3) NoFunction
CFI (cfiCond3) Conditional ??CrossCallReturnLabel_37
CFI (cfiCond3) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond3) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond3) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond3) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond3) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond3) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond3) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond3) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond3) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond3) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond3) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond3) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond3) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond3) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond3) CFA_SP SP+0
CFI (cfiCond3) CFA_XSP16 add(XSP16, 15)
CFI Block cfiCond4 Using cfiCommon0
CFI (cfiCond4) NoFunction
CFI (cfiCond4) Conditional ??CrossCallReturnLabel_35
CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond4) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond4) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond4) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond4) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond4) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond4) CFA_SP SP+-1
CFI (cfiCond4) CFA_XSP16 add(XSP16, 11)
CFI Block cfiCond5 Using cfiCommon0
CFI (cfiCond5) NoFunction
CFI (cfiCond5) Conditional ??CrossCallReturnLabel_36
CFI (cfiCond5) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond5) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond5) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond5) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond5) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond5) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond5) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond5) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond5) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond5) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond5) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond5) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond5) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond5) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond5) CFA_SP SP+0
CFI (cfiCond5) CFA_XSP16 add(XSP16, 15)
CFI Block cfiCond6 Using cfiCommon0
CFI (cfiCond6) NoFunction
CFI (cfiCond6) Conditional ??CrossCallReturnLabel_34
CFI (cfiCond6) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond6) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond6) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond6) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond6) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond6) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond6) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond6) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond6) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond6) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond6) CFA_SP SP+0
CFI (cfiCond6) CFA_XSP16 add(XSP16, 11)
CFI Block cfiPicker7 Using cfiCommon1
CFI (cfiPicker7) NoFunction
CFI (cfiPicker7) Picker
MOV DPL,A
MOV A,R7
CFI Block cfiCond8 Using cfiCommon0
CFI (cfiCond8) NoFunction
CFI (cfiCond8) Conditional ??CrossCallReturnLabel_39
CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond8) CFA_SP SP+0
CFI (cfiCond8) CFA_XSP16 add(XSP16, 10)
??Subroutine7_0:
ADDC A,#0x0
MOV DPH,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -