📄 hal_uart.lst
字号:
\ 000096 A3 INC DPTR
\ 000097 A3 INC DPTR
\ 000098 A3 INC DPTR
\ 000099 A3 INC DPTR
\ 00009A 12.... LCALL ?Subroutine9 & 0xFFFF
589 cfg->rxHigh = config->rx.maxBufSize - config->flowControlThreshold;
\ ??CrossCallReturnLabel_29:
\ 00009D E0 MOVX A,@DPTR
\ 00009E F8 MOV R0,A
\ 00009F 85..82 MOV DPL,?V0 + 4
\ 0000A2 85..83 MOV DPH,?V0 + 5
\ 0000A5 E0 MOVX A,@DPTR
\ 0000A6 C3 CLR C
\ 0000A7 98 SUBB A,R0
\ 0000A8 8E82 MOV DPL,R6
\ 0000AA 8F83 MOV DPH,R7
\ 0000AC A3 INC DPTR
\ 0000AD A3 INC DPTR
\ 0000AE A3 INC DPTR
\ 0000AF A3 INC DPTR
\ 0000B0 A3 INC DPTR
\ 0000B1 A3 INC DPTR
\ 0000B2 A3 INC DPTR
\ 0000B3 F0 MOVX @DPTR,A
590 cfg->rxCB = config->callBackFunc;
\ 0000B4 E5.. MOV A,?V0 + 0
\ 0000B6 241B ADD A,#0x1b
\ 0000B8 12.... LCALL ?Subroutine8 & 0xFFFF
\ ??CrossCallReturnLabel_22:
\ 0000BB F9 MOV R1,A
\ 0000BC A3 INC DPTR
\ 0000BD E0 MOVX A,@DPTR
\ 0000BE FA MOV R2,A
\ 0000BF A3 INC DPTR
\ 0000C0 E0 MOVX A,@DPTR
\ 0000C1 FB MOV R3,A
\ 0000C2 EE MOV A,R6
\ 0000C3 2410 ADD A,#0x10
\ 0000C5 12.... LCALL ?Subroutine16 & 0xFFFF
\ ??CrossCallReturnLabel_47:
\ 0000C8 E9 MOV A,R1
\ 0000C9 F0 MOVX @DPTR,A
\ 0000CA A3 INC DPTR
\ 0000CB EA MOV A,R2
\ 0000CC F0 MOVX @DPTR,A
\ 0000CD A3 INC DPTR
\ 0000CE EB MOV A,R3
\ 0000CF F0 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 )
\ 0000D0 7401 MOV A,#0x1
\ 0000D2 65.. XRL A,?V0 + 2
\ 0000D4 7071 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;
\ 0000D6 85..82 MOV DPL,?V0 + 0
\ 0000D9 85..83 MOV DPH,?V0 + 1
\ 0000DC A3 INC DPTR
\ 0000DD E0 MOVX A,@DPTR
\ 0000DE 6406 XRL A,#0x6
\ 0000E0 7004 JNZ ??HalUARTOpen_2
\ 0000E2 7A3B MOV R2,#0x3b
\ 0000E4 8002 SJMP ??HalUARTOpen_3
\ ??HalUARTOpen_2:
\ 0000E6 7AD8 MOV R2,#-0x28
\ ??HalUARTOpen_3:
\ 0000E8 8AFA MOV 0xfa,R2
639 U1GCR = (config->baudRate == HAL_UART_BR_38400) ? 10 : 11;
\ 0000EA 85..82 MOV DPL,?V0 + 0
\ 0000ED 85..83 MOV DPH,?V0 + 1
\ 0000F0 A3 INC DPTR
\ 0000F1 E0 MOVX A,@DPTR
\ 0000F2 6406 XRL A,#0x6
\ 0000F4 7004 JNZ ??HalUARTOpen_4
\ 0000F6 7A0A MOV R2,#0xa
\ 0000F8 8002 SJMP ??HalUARTOpen_5
\ ??HalUARTOpen_4:
\ 0000FA 7A0B MOV R2,#0xb
\ ??HalUARTOpen_5:
\ 0000FC 8AFC MOV 0xfc,R2
640
641 U1CSR |= CSR_RE;
\ 0000FE D2FE 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;
\ 000100 EE MOV A,R6
\ 000101 240F ADD A,#0xf
\ 000103 12.... LCALL ?Subroutine16 & 0xFFFF
\ ??CrossCallReturnLabel_48:
\ 000106 7480 MOV A,#-0x80
\ 000108 12.... LCALL ?Subroutine10 & 0xFFFF
652 HAL_UART_ASSERT( (config->rx.maxBufSize < 256) );
653 cfg->rxBuf = osal_mem_alloc( cfg->rxMax+1 );
\ ??CrossCallReturnLabel_31:
\ 00010B E0 MOVX A,@DPTR
\ 00010C 12.... LCALL ?Subroutine11 & 0xFFFF
\ ??CrossCallReturnLabel_34:
\ 00010F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000112 8E82 MOV DPL,R6
\ 000114 8F83 MOV DPH,R7
\ 000116 EA MOV A,R2
\ 000117 F0 MOVX @DPTR,A
\ 000118 A3 INC DPTR
\ 000119 EB MOV A,R3
\ 00011A F0 MOVX @DPTR,A
654 URX1IE = 1;
\ 00011B D2AB SETB 0xa8.3
655 IEN2 |= UTX1IE;
\ 00011D 439A08 ORL 0x9a,#0x8
656 #endif
657
658 // 8 bits/char; no parity; 1 stop bit; stop bit hi.
659 if ( config->flowControl )
\ 000120 85..82 MOV DPL,?V0 + 0
\ 000123 85..83 MOV DPH,?V0 + 1
\ 000126 A3 INC DPTR
\ 000127 A3 INC DPTR
\ 000128 E0 MOVX A,@DPTR
\ 000129 6019 JZ ??HalUARTOpen_6
660 {
661 cfg->flag |= UART_CFG_FLW;
\ 00012B EE MOV A,R6
\ 00012C 240F ADD A,#0xf
\ 00012E F582 MOV DPL,A
\ 000130 EF MOV A,R7
\ 000131 12.... LCALL ??Subroutine8_0 & 0xFFFF
\ ??CrossCallReturnLabel_23:
\ 000134 D2E5 SETB 0xE0 /* A */.5
\ 000136 F0 MOVX @DPTR,A
662 U1UCR = UCR_FLOW | UCR_STOP;
\ 000137 75FB42 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;
\ 00013A 43F410 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;
\ 00013D 43FE20 ORL 0xfe,#0x20
667 RX1_FLOW_ON;
\ 000140 C295 CLR 0x90.5
\ 000142 8003 SJMP ??HalUARTOpen_1
668 }
669 else
670 {
671 U1UCR = UCR_STOP;
\ ??HalUARTOpen_6:
\ 000144 75FB02 MOV 0xfb,#0x2
672 }
673 }
674 #endif
675
676 return HAL_UART_SUCCESS;
\ ??HalUARTOpen_1:
\ 000147 7900 MOV R1,#0x0
\ 000149 7F06 MOV R7,#0x6
\ 00014B 02.... LJMP ?BANKED_LEAVE_XDATA
677 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine11:
\ 000000 F8 MOV R0,A
\ 000001 7401 MOV A,#0x1
\ 000003 28 ADD A,R0
\ 000004 FA MOV R2,A
\ 000005 E4 CLR A
\ 000006 3400 ADDC A,#0x0
\ 000008 FB MOV R3,A
\ 000009 90.... MOV DPTR,#(osal_mem_alloc & 0xffff)
\ 00000C 74.. MOV A,#((osal_mem_alloc >> 16) & 0xff)
\ 00000E 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine10:
\ 000000 12.... LCALL ?Subroutine14 & 0xFFFF
\ ??CrossCallReturnLabel_39:
\ 000003 A3 INC DPTR
\ 000004 A3 INC DPTR
\ 000005 A3 INC DPTR
\ 000006 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine14:
\ 000000 F0 MOVX @DPTR,A
\ 000001 ; Setup parameters for call to function osal_mem_alloc
\ 000001 8E82 MOV DPL,R6
\ 000003 8F83 MOV DPH,R7
\ 000005 A3 INC DPTR
\ 000006 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine9:
\ 000000 F0 MOVX @DPTR,A
\ 000001 85..82 MOV DPL,?V0 + 0
\ 000004 85..83 MOV DPH,?V0 + 1
\ 000007 A3 INC DPTR
\ 000008 A3 INC DPTR
\ 000009 A3 INC DPTR
\ 00000A 22 RET
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine8:
\ 000000 F582 MOV DPL,A
\ 000002 E5.. MOV A,?V0 + 1
\ ??Subroutine8_0:
\ 000004 12.... LCALL ?Subroutine15 & 0xFFFF
\ ??CrossCallReturnLabel_45:
\ 000007 22 RET
678
679 /******************************************************************************
680 * @fn HalUARTClose
681 *
682 * @brief Close the UART
683 *
684 * @param port - UART port
685 *
686 * @return none
687 ************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -