⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_uart.lst

📁 cc2430讀取短地址程式
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   000018   F0           MOVX    @DPTR,A
   \   000019   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine17:
   \   000000   F0           MOVX    @DPTR,A
   \   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
   \                     ?Subroutine8:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   90....       MOV     DPTR,#(dmaCh1234 + 29)
   \   000004   F0           MOVX    @DPTR,A
   \   000005   90....       MOV     DPTR,#(dmaCh1234 + 28)
   \   000008   E0           MOVX    A,@DPTR
   \   000009   54E0         ANL     A,#0xe0
   \   00000B   F0           MOVX    @DPTR,A
   \   00000C   53D1EF       ANL     0xd1,#0xef
   \   00000F   75D610       MOV     0xd6,#0x10
   \   000012   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   A3           INC     DPTR
   \   000001   A3           INC     DPTR
   \   000002   A3           INC     DPTR
   \   000003   A3           INC     DPTR
   \   000004   E0           MOVX    A,@DPTR
   \   000005   F8           MOV     R0,A
   \   000006   74D0         MOV     A,#-0x30
   \   000008   28           ADD     A,R0
   \   000009   F8           MOV     R0,A
   \   00000A   74FF         MOV     A,#-0x1
   \   00000C   3400         ADDC    A,#0x0
   \   00000E   F9           MOV     R1,A
   \   00000F   C3           CLR     C
   \   000010   EA           MOV     A,R2
   \   000011   98           SUBB    A,R0
   \   000012   E4           CLR     A
   \   000013   99           SUBB    A,R1
   \   000014   A2D2         MOV     C,0xD0 /* PSW */.2
   \   000016   65D0         XRL     A,PSW
   \   000018   33           RLC     A
   \   000019   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine5:
   \   000000   EE           MOV     A,R6
   \   000001   240F         ADD     A,#0xf
   \                     ??Subroutine5_0:
   \   000003   F582         MOV     DPL,A
   \   000005   EF           MOV     A,R7
   \                     ??Subroutine5_1:
   \   000006   12....       LCALL   ?Subroutine18 & 0xFFFF
   \                     ??CrossCallReturnLabel_63:
   \   000009   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine18:
   \   000000   3400         ADDC    A,#0x0
   \   000002   F583         MOV     DPH,A
   \   000004   E0           MOVX    A,@DPTR
   \   000005   22           RET
    371          #endif
    372          
    373          #if HAL_UART_ISR
    374          /******************************************************************************
    375           * @fn      pollISR
    376           *
    377           * @brief   Poll a USART module implemented by ISR.
    378           *
    379           * @param   cfg - USART configuration structure.
    380           *
    381           * @return  none
    382           *****************************************************************************/
    383          static void pollISR( uartCfg_t *cfg )
    384          {
    385            uint8 cnt = UART_RX_AVAIL( cfg );
    386          
    387            if ( !(cfg->flag & UART_CFG_RXF) )
    388            {
    389              // If anything received, reset the Rx idle timer.
    390              if ( cfg->rxCnt != cnt )
    391              {
    392                cfg->rxTick = HAL_UART_RX_IDLE;
    393                cfg->rxCnt = cnt;
    394              }
    395          
    396              /* It is necessary to stop Rx flow in advance of a full Rx buffer because
    397               * bytes can keep coming while sending H/W fifo flushes.
    398               */
    399              if ( cfg->rxCnt >= (cfg->rxMax - SAFE_RX_MIN) )
    400              {
    401                RX_STOP_FLOW( cfg );
    402              }
    403            }
    404          }
    405          #endif
    406          
    407          /******************************************************************************
    408           * @fn      HalUARTInit
    409           *
    410           * @brief   Initialize the UART
    411           *
    412           * @param   none
    413           *
    414           * @return  none
    415           *****************************************************************************/

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    416          void HalUARTInit( void )
   \                     HalUARTInit:
    417          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    418          #if HAL_UART_DMA
    419            halDMADesc_t *ch;
    420          #endif
    421          
    422            // Set P2 priority - USART0 over USART1 if both are defined.
    423            P2DIR &= ~P2DIR_PRIPO;
   \   000004   53FF3F       ANL     0xff,#0x3f
   \   000007   E5FF         MOV     A,0xff
    424            P2DIR |= HAL_UART_PRIPO;
   \   000009   85FFFF       MOV     0xff,0xff
    425          
    426          #if HAL_UART_0_ENABLE
    427            // Set UART0 I/O location to P0.
    428            PERCFG &= ~HAL_UART_0_PERCFG_BIT;
   \   00000C   53F1FE       ANL     0xf1,#0xfe
    429          
    430            /* Enable Tx and Rx on P0 */
    431            P0SEL |= HAL_UART_0_P0_RX_TX;
   \   00000F   43F30C       ORL     0xf3,#0xc
   \   000012   E5F3         MOV     A,0xf3
    432          
    433            /* Make sure ADC doesnt use this */
    434            ADCCFG &= ~HAL_UART_0_P0_RX_TX;
   \   000014   53F2F3       ANL     0xf2,#0xf3
   \   000017   E5F2         MOV     A,0xf2
    435          
    436            /* Mode is UART Mode */
    437            U0CSR = CSR_MODE;
   \   000019   758680       MOV     0x86,#-0x80
    438          
    439            /* Flush it */
    440            U0UCR = UCR_FLUSH;
   \   00001C   75C480       MOV     0xc4,#-0x80
    441          #endif
    442          
    443          #if HAL_UART_1_ENABLE
    444            // Set UART1 I/O location to P1.
    445            PERCFG |= HAL_UART_1_PERCFG_BIT;
    446          
    447            /* Enable Tx and Rx on P1 */
    448            P1SEL  |= HAL_UART_1_P1_RX_TX;
    449          
    450            /* Make sure ADC doesnt use this */
    451            ADCCFG &= ~HAL_UART_1_P1_RX_TX;
    452          
    453            /* Mode is UART Mode */
    454            U1CSR = CSR_MODE;
    455          
    456            /* Flush it */
    457            U1UCR = UCR_FLUSH;
    458          #endif
    459          
    460          #if HAL_UART_DMA
    461            // Setup Tx by DMA.
    462            ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_TX );
    463          
    464            // The start address of the destination.
    465            HAL_DMA_SET_DEST( ch, DMA_UDBUF );
   \   00001F   74DF         MOV     A,#-0x21
   \   000021   90....       MOV     DPTR,#(dmaCh1234 + 18)
   \   000024   F0           MOVX    @DPTR,A
   \   000025   74C1         MOV     A,#-0x3f
   \   000027   90....       MOV     DPTR,#(dmaCh1234 + 19)
   \   00002A   F0           MOVX    @DPTR,A
    466          
    467            // Using the length field to determine how many bytes to transfer.
    468            HAL_DMA_SET_VLEN( ch, HAL_DMA_VLEN_USE_LEN );
   \   00002B   90....       MOV     DPTR,#(dmaCh1234 + 20)
   \   00002E   E0           MOVX    A,@DPTR
   \   00002F   541F         ANL     A,#0x1f
   \   000031   F0           MOVX    @DPTR,A
    469          
    470            // One byte is transferred each time.
    471            HAL_DMA_SET_WORD_SIZE( ch, HAL_DMA_WORDSIZE_BYTE );
    472          
    473            // The bytes are transferred 1-by-1 on Tx Complete trigger.
    474            HAL_DMA_SET_TRIG_MODE( ch, HAL_DMA_TMODE_SINGLE );
    475            HAL_DMA_SET_TRIG_SRC( ch, DMATRIG_TX );
   \   000032   740F         MOV     A,#0xf
   \   000034   90....       MOV     DPTR,#(dmaCh1234 + 22)
   \   000037   F0           MOVX    @DPTR,A
    476          
    477            // The source address is decremented by 1 byte after each transfer.
    478            HAL_DMA_SET_SRC_INC( ch, HAL_DMA_SRCINC_1 );
    479          
    480            // The destination address is constant - the Tx Data Buffer.
    481            HAL_DMA_SET_DST_INC( ch, HAL_DMA_DSTINC_0 );
    482          
    483            // The DMA is to be polled and shall not issue an IRQ upon completion.
    484            HAL_DMA_SET_IRQ( ch, HAL_DMA_IRQMASK_DISABLE );
    485          
    486            // Xfer all 8 bits of a byte xfer.
    487            HAL_DMA_SET_M8( ch, HAL_DMA_M8_USE_8_BITS );
    488          
    489            // DMA Tx has shared priority for memory access - every other one.
    490            HAL_DMA_SET_PRIORITY( ch, HAL_DMA_PRI_HIGH );
   \   000038   7442         MOV     A,#0x42
   \   00003A   90....       MOV     DPTR,#(dmaCh1234 + 23)
   \   00003D   F0           MOVX    @DPTR,A
    491          
    492            // Setup Rx by DMA.
    493            ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_RX );
    494          
    495            // The start address of the source.
    496            HAL_DMA_SET_SOURCE( ch, DMA_UDBUF );
   \   00003E   74DF         MOV     A,#-0x21
   \   000040   90....       MOV     DPTR,#(dmaCh1234 + 24)
   \   000043   F0           MOVX    @DPTR,A
   \   000044   74C1         MOV     A,#-0x3f
   \   000046   90....       MOV     DPTR,#(dmaCh1234 + 25)
   \   000049   F0           MOVX    @DPTR,A
    497          
    498            // Using the length field to determine how many bytes to transfer.
    499            HAL_DMA_SET_VLEN( ch, HAL_DMA_VLEN_USE_LEN );
   \   00004A   90....       MOV     DPTR,#(dmaCh1234 + 28)
   \   00004D   E0           MOVX    A,@DPTR
   \   00004E   541F         ANL     A,#0x1f
   \   000050   F0           MOVX    @DPTR,A
    500          
    501            /* The trick is to cfg DMA to xfer 2 bytes for every 1 byte of Rx.
    502             * The byte after the Rx Data Buffer is the Baud Cfg Register,
    503             * which always has a known value. So init Rx buffer to inverse of that
    504             * known value. DMA word xfer will flip the bytes, so every valid Rx byte
    505             * in the Rx buffer will be preceded by a DMA_PAD char equal to the
    506             * Baud Cfg Register value.
    507             */
    508            HAL_DMA_SET_WORD_SIZE( ch, HAL_DMA_WORDSIZE_WORD );
    509          
    510            // The bytes are transferred 1-by-1 on Rx Complete trigger.
    511            HAL_DMA_SET_TRIG_MODE( ch, HAL_DMA_TMODE_SINGLE );
    512            HAL_DMA_SET_TRIG_SRC( ch, DMATRIG_RX );
   \   000051   748E         MOV     A,#-0x72
   \   000053   90....       MOV     DPTR,#(dmaCh1234 + 30)
   \   000056   F0           MOVX    @DPTR,A
    513          
    514            // The source address is constant - the Rx Data Buffer.
    515            HAL_DMA_SET_SRC_INC( ch, HAL_DMA_SRCINC_0 );
    516          
    517            // The destination address is incremented by 1 word after each transfer.
    518            HAL_DMA_SET_DST_INC( ch, HAL_DMA_DSTINC_1 );
    519          
    520            // The DMA is to be polled and shall not issue an IRQ upon completion.
    521            HAL_DMA_SET_IRQ( ch, HAL_DMA_IRQMASK_DISABLE );
    522          
    523            // Xfer all 8 bits of a byte xfer.
    524            HAL_DMA_SET_M8( ch, HAL_DMA_M8_USE_8_BITS );
    525          
    526            // DMA has highest priority for memory access.
    527            HAL_DMA_SET_PRIORITY( ch, HAL_DMA_PRI_HIGH );
   \   000057   7412         MOV     A,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -