📄 hal_uart.s51
字号:
ADD A,#0x1b
LCALL ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_22:
MOV R1,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV A,R6
ADD A,#0x10
LCALL ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_47:
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 591
// 592 #if HAL_UART_0_ENABLE
// 593 if ( port == HAL_UART_PORT_0 )
// 594 {
// 595 // Only supporting 38400 or 115200 for code size - other is possible.
// 596 U0BAUD = (config->baudRate == HAL_UART_BR_38400) ? 59 : 216;
// 597 U0GCR = (config->baudRate == HAL_UART_BR_38400) ? 10 : 11;
// 598
// 599 U0CSR |= CSR_RE;
// 600
// 601 #if HAL_UART_DMA == 1
// 602 cfg->flag = UART_CFG_DMA;
// 603 HAL_UART_ASSERT( (config->rx.maxBufSize <= 128) );
// 604 HAL_UART_ASSERT( (config->rx.maxBufSize > SAFE_RX_MIN) );
// 605 cfg->rxBuf = osal_mem_alloc( cfg->rxMax*2 );
// 606 osal_memset( cfg->rxBuf, ~DMA_PAD, cfg->rxMax*2 );
// 607 DMA_RX( cfg );
// 608 #else
// 609 cfg->flag = 0;
// 610 HAL_UART_ASSERT( (config->rx.maxBufSize < 256) );
// 611 cfg->rxBuf = osal_mem_alloc( cfg->rxMax+1 );
// 612 URX0IE = 1;
// 613 IEN2 |= UTX0IE;
// 614 #endif
// 615
// 616 // 8 bits/char; no parity; 1 stop bit; stop bit hi.
// 617 if ( config->flowControl )
// 618 {
// 619 cfg->flag |= UART_CFG_FLW;
// 620 U0UCR = UCR_FLOW | UCR_STOP;
// 621 // Must rely on H/W for RTS (i.e. Tx stops when receiver negates CTS.)
// 622 P0SEL |= HAL_UART_0_P0_RTS;
// 623 // Cannot use H/W for CTS as DMA does not clear the Rx bytes properly.
// 624 P0DIR |= HAL_UART_0_P0_CTS;
// 625 RX0_FLOW_ON;
// 626 }
// 627 else
// 628 {
// 629 U0UCR = UCR_STOP;
// 630 }
// 631 }
// 632 #endif
// 633
// 634 #if HAL_UART_1_ENABLE
// 635 if ( port == HAL_UART_PORT_1 )
MOV A,#0x1
XRL A,?V0 + 2
JNZ ??HalUARTOpen_1
// 636 {
// 637 // Only supporting 38400 or 115200 for code size - other is possible.
// 638 U1BAUD = (config->baudRate == HAL_UART_BR_38400) ? 59 : 216;
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
MOVX A,@DPTR
XRL A,#0x6
JNZ ??HalUARTOpen_2
MOV R2,#0x3b
SJMP ??HalUARTOpen_3
??HalUARTOpen_2:
MOV R2,#-0x28
??HalUARTOpen_3:
MOV 0xfa,R2
// 639 U1GCR = (config->baudRate == HAL_UART_BR_38400) ? 10 : 11;
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
MOVX A,@DPTR
XRL A,#0x6
JNZ ??HalUARTOpen_4
MOV R2,#0xa
SJMP ??HalUARTOpen_5
??HalUARTOpen_4:
MOV R2,#0xb
??HalUARTOpen_5:
MOV 0xfc,R2
// 640
// 641 U1CSR |= CSR_RE;
SETB 0xf8.6
// 642
// 643 #if HAL_UART_DMA == 2
// 644 cfg->flag = (UART_CFG_U1F | UART_CFG_DMA);
// 645 HAL_UART_ASSERT( (config->rx.maxBufSize <= 128) );
// 646 HAL_UART_ASSERT( (config->rx.maxBufSize > SAFE_RX_MIN) );
// 647 cfg->rxBuf = osal_mem_alloc( cfg->rxMax*2 );
// 648 osal_memset( cfg->rxBuf, ~DMA_PAD, cfg->rxMax*2 );
// 649 DMA_RX( cfg );
// 650 #else
// 651 cfg->flag = UART_CFG_U1F;
MOV A,R6
ADD A,#0xf
LCALL ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_48:
MOV A,#-0x80
LCALL ?Subroutine10 & 0xFFFF
// 652 HAL_UART_ASSERT( (config->rx.maxBufSize < 256) );
// 653 cfg->rxBuf = osal_mem_alloc( cfg->rxMax+1 );
??CrossCallReturnLabel_31:
MOVX A,@DPTR
LCALL ?Subroutine11 & 0xFFFF
??CrossCallReturnLabel_34:
LCALL ?BCALL ; Banked call to: DPTR()
MOV DPL,R6
MOV DPH,R7
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
// 654 URX1IE = 1;
SETB 0xa8.3
// 655 IEN2 |= UTX1IE;
ORL 0x9a,#0x8
// 656 #endif
// 657
// 658 // 8 bits/char; no parity; 1 stop bit; stop bit hi.
// 659 if ( config->flowControl )
MOV DPL,?V0 + 0
MOV DPH,?V0 + 1
INC DPTR
INC DPTR
MOVX A,@DPTR
JZ ??HalUARTOpen_6
// 660 {
// 661 cfg->flag |= UART_CFG_FLW;
MOV A,R6
ADD A,#0xf
MOV DPL,A
MOV A,R7
LCALL ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_23:
SETB 0xE0 /* A */.5
MOVX @DPTR,A
// 662 U1UCR = UCR_FLOW | UCR_STOP;
MOV 0xfb,#0x42
// 663 // Must rely on H/W for RTS (i.e. Tx stops when receiver negates CTS.)
// 664 P1SEL |= HAL_UART_1_P1_RTS;
ORL 0xf4,#0x10
// 665 // Cannot use H/W for CTS as DMA does not clear the Rx bytes properly.
// 666 P1DIR |= HAL_UART_1_P1_CTS;
ORL 0xfe,#0x20
// 667 RX1_FLOW_ON;
CLR 0x90.5
SJMP ??HalUARTOpen_1
// 668 }
// 669 else
// 670 {
// 671 U1UCR = UCR_STOP;
??HalUARTOpen_6:
MOV 0xfb,#0x2
// 672 }
// 673 }
// 674 #endif
// 675
// 676 return HAL_UART_SUCCESS;
??HalUARTOpen_1:
MOV R1,#0x0
MOV R7,#0x6
LJMP ?BANKED_LEAVE_XDATA
CFI EndBlock cfiBlock6
// 677 }
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine11:
CFI Block cfiCond7 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_34
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, 14)
CFI Block cfiCond8 Using cfiCommon0
CFI (cfiCond8) NoFunction
CFI (cfiCond8) Conditional ??CrossCallReturnLabel_33
CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond8) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond8) V5 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, 14)
CFI Block cfiPicker9 Using cfiCommon1
CFI (cfiPicker9) NoFunction
CFI (cfiPicker9) Picker
MOV R0,A
MOV A,#0x1
ADD A,R0
MOV R2,A
CLR A
ADDC A,#0x0
MOV R3,A
MOV DPTR,#(osal_mem_alloc & 0xffff)
MOV A,#((osal_mem_alloc >> 16) & 0xff)
RET
CFI EndBlock cfiCond7
CFI EndBlock cfiCond8
CFI EndBlock cfiPicker9
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine10:
CFI Block cfiCond10 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_32
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, 14)
CFI Block cfiCond11 Using cfiCommon0
CFI (cfiCond11) NoFunction
CFI (cfiCond11) Conditional ??CrossCallReturnLabel_31
CFI (cfiCond11) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond11) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond11) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond11) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond11) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond11) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond11) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond11) V5 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, 14)
CFI Block cfiPicker12 Using cfiCommon1
CFI (cfiPicker12) NoFunction
CFI (cfiPicker12) Picker
LCALL ?Subroutine14 & 0xFFFF
??CrossCallReturnLabel_39:
INC DPTR
INC DPTR
INC DPTR
RET
CFI EndBlock cfiCond10
CFI EndBlock cfiCond11
CFI EndBlock cfiPicker12
RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine14:
CFI Block cfiCond13 Using cfiCommon0
CFI NoFunction
CFI Conditional ??CrossCallReturnLabel_39, ??CrossCallReturnLabel_32
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, 14)
CFI Block cfiCond14 Using cfiCommon0
CFI (cfiCond14) NoFunction
CFI (cfiCond14) Conditional ??CrossCallReturnLabel_40
CFI (cfiCond14) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
CFI (cfiCond14) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
CFI (cfiCond14) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
CFI (cfiCond14) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
CFI (cfiCond14) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
CFI (cfiCond14) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
CFI (cfiCond14) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
CFI (cfiCond14) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
CFI (cfiCond14) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
CFI (cfiCond14) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
CFI (cfiCond14) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
CFI (cfiCond14) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
CFI (cfiCond14) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
CFI (cfiCond14) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
CFI (cfiCond14) CFA_SP SP+0
CFI (cfiCond14) CFA_XSP16 add(XSP16, 14)
CFI Block cfiCond15 Using cfiCommon0
CFI (cfiCond15) NoFunction
CFI (cfiCond15) Conditional ??CrossCallReturnLabel_41
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 (cfi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -