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

📄 mac_tx.lst

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    194              {
    195                macTxBe = MIN(2, macTxBe);
   \   00007A   90....       MOV     DPTR,#macTxBe
   \   00007D   E0           MOVX    A,@DPTR
   \   00007E   C3           CLR     C
   \   00007F   9403         SUBB    A,#0x3
   \   000081   4002         JC      ??macTxFrame_10
   \   000083   7A02         MOV     R2,#0x2
   \                     ??macTxFrame_10:
   \   000085   EA           MOV     A,R2
   \   000086   F0           MOVX    @DPTR,A
    196              }
    197          
    198              txCsmaPrep();
   \                     ??macTxFrame_9:
   \   000087                ; Setup parameters for call to function txCsmaPrep
   \   000087   90....       MOV     DPTR,#(??txCsmaPrep & 0xffff)
   \   00008A   74..         MOV     A,#((??txCsmaPrep >> 16) & 0xff)
   \                     ??macTxFrame_5:
   \   00008C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    199            }
    200          
    201            /*-------------------------------------------------------------------------------
    202             *  Load transmit FIFO unless this is a retransmit.  No need to write
    203             *  the FIFO again in that case.
    204             */
    205            if (!txRetransmitFlag)
   \   00008F   90....       MOV     DPTR,#??txRetransmitFlag
   \   000092   E0           MOVX    A,@DPTR
   \   000093   7067         JNZ     ??macTxFrame_11
    206            {
    207              uint8 * p;
    208              uint8   lenMhrMsdu;
    209          
    210              MAC_ASSERT(pMacDataTx != NULL); /* must have data to transmit */
   \   000095   90....       MOV     DPTR,#pMacDataTx
   \   000098   E0           MOVX    A,@DPTR
   \   000099   7002         JNZ     ??macTxFrame_12
   \   00009B   A3           INC     DPTR
   \   00009C   E0           MOVX    A,@DPTR
   \                     ??macTxFrame_12:
   \   00009D   7008         JNZ     ??macTxFrame_13
   \   00009F                ; Setup parameters for call to function halAssertHandler
   \   00009F   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   0000A2   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   0000A4   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    211          
    212              /* save needed parameters */
    213              txAckReq = MAC_ACK_REQUEST(pMacDataTx->msdu.p);
   \                     ??macTxFrame_13:
   \   0000A7   90....       MOV     DPTR,#pMacDataTx
   \   0000AA   E0           MOVX    A,@DPTR
   \   0000AB   2402         ADD     A,#0x2
   \   0000AD   12....       LCALL   ?Subroutine1 & 0xFFFF
   \                     ??CrossCallReturnLabel_3:
   \   0000B0   FA           MOV     R2,A
   \   0000B1   A3           INC     DPTR
   \   0000B2   E0           MOVX    A,@DPTR
   \   0000B3   F583         MOV     DPH,A
   \   0000B5   8A82         MOV     DPL,R2
   \   0000B7   E0           MOVX    A,@DPTR
   \   0000B8   5420         ANL     A,#0x20
   \   0000BA   90....       MOV     DPTR,#??txAckReq
   \   0000BD   F0           MOVX    @DPTR,A
    214              txSeqn   = MAC_SEQ_NUMBER(pMacDataTx->msdu.p);
   \   0000BE   8882         MOV     DPL,R0
   \   0000C0   8983         MOV     DPH,R1
   \   0000C2   A3           INC     DPTR
   \   0000C3   E0           MOVX    A,@DPTR
   \   0000C4   F583         MOV     DPH,A
   \   0000C6   8A82         MOV     DPL,R2
   \   0000C8   A3           INC     DPTR
   \   0000C9   A3           INC     DPTR
   \   0000CA   E0           MOVX    A,@DPTR
   \   0000CB   90....       MOV     DPTR,#??txSeqn
   \   0000CE   F0           MOVX    @DPTR,A
    215          
    216              /* set length of frame (note: use of term msdu is a misnomer, here it's actually mhr + msdu) */
    217              lenMhrMsdu = pMacDataTx->msdu.len;
   \   0000CF   12....       LCALL   ?Subroutine0 & 0xFFFF
   \                     ??CrossCallReturnLabel_0:
   \   0000D2   E0           MOVX    A,@DPTR
   \   0000D3   FA           MOV     R2,A
    218          
    219              /* calling code guarantees an unused prepended byte  */
    220              p = pMacDataTx->msdu.p - PREPENDED_BYTE_LEN;
   \   0000D4   8882         MOV     DPL,R0
   \   0000D6   8983         MOV     DPH,R1
   \   0000D8   E0           MOVX    A,@DPTR
   \   0000D9   24FF         ADD     A,#-0x1
   \   0000DB   F8           MOV     R0,A
   \   0000DC   A3           INC     DPTR
   \   0000DD   E0           MOVX    A,@DPTR
   \   0000DE   34FF         ADDC    A,#-0x1
   \   0000E0   F9           MOV     R1,A
   \   0000E1   8882         MOV     DPL,R0
   \   0000E3   8983         MOV     DPH,R1
    221          
    222              /* first byte of buffer is length of MPDU */
    223              *p = lenMhrMsdu + MFR_LEN;
   \   0000E5   7402         MOV     A,#0x2
   \   0000E7   2A           ADD     A,R2
   \   0000E8   F0           MOVX    @DPTR,A
    224          
    225              /*
    226               *  Flush the TX FIFO.  This is necessary in case the previous transmit was never
    227               *  actually sent (e.g. CSMA failed without strobing TXON).  If bytes are written to
    228               *  the FIFO but not transmitted, they remain in the FIFO to be transmitted whenever
    229               *  a strobe of TXON does happen.
    230               */
    231              MAC_RADIO_FLUSH_TX_FIFO();
   \   0000E9   75E1E7       MOV     0xe1,#-0x19
    232          
    233              /* write bytes to FIFO, prepended byte is included, MFR is not (it's generated by hardware) */
    234              MAC_RADIO_WRITE_TX_FIFO(p, PREPENDED_BYTE_LEN + lenMhrMsdu);
   \   0000EC                ; Setup parameters for call to function macMemWriteTxFifo
   \   0000EC   7401         MOV     A,#0x1
   \   0000EE   2A           ADD     A,R2
   \   0000EF   F9           MOV     R1,A
   \   0000F0   AA82         MOV     R2,DPL
   \   0000F2   AB83         MOV     R3,DPH
   \   0000F4   90....       MOV     DPTR,#(macMemWriteTxFifo & 0xffff)
   \   0000F7   74..         MOV     A,#((macMemWriteTxFifo >> 16) & 0xff)
   \   0000F9   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    235            }
    236          
    237            /*-------------------------------------------------------------------------------
    238             *  If not receiving, start the transmit.  If receive is active
    239             *  queue up the transmit.
    240             *
    241             *  Critical sections around the state change prevents any sort of race condition
    242             *  with  macTxStartQueuedFrame().  This guarantees function txGo() will only be
    243             *  called once.
    244             */
    245            {
    246              halIntState_t  s;
    247          
    248              HAL_ENTER_CRITICAL_SECTION(s);
   \                     ??macTxFrame_11:
   \   0000FC   A2AF         MOV     C,0xa8.7
   \   0000FE   E4           CLR     A
   \   0000FF   92E0         MOV     0xE0 /* A   */.0,C
   \   000101   C2AF         CLR     0xa8.7
    249              if (!macRxActive && !macRxOutgoingAckFlag)
   \   000103   90....       MOV     DPTR,#macRxActive
   \   000106   E0           MOVX    A,@DPTR
   \   000107   7011         JNZ     ??macTxFrame_14
   \   000109   90....       MOV     DPTR,#macRxOutgoingAckFlag
   \   00010C   E0           MOVX    A,@DPTR
   \   00010D   700B         JNZ     ??macTxFrame_14
    250              {
    251                macTxActive = MAC_TX_ACTIVE_GO;
   \   00010F   7483         MOV     A,#-0x7d
   \   000111   90....       MOV     DPTR,#macTxActive
   \   000114   12....       LCALL   ?Subroutine2 & 0xFFFF
    252                HAL_EXIT_CRITICAL_SECTION(s);
    253                txGo();
   \                     ??CrossCallReturnLabel_4:
   \   000117   02....       LJMP    ??macTxFrame_2 & 0xFFFF
    254              }
    255              else
    256              {
    257                macTxActive = MAC_TX_ACTIVE_QUEUED;
   \                     ??macTxFrame_14:
   \   00011A   7402         MOV     A,#0x2
   \   00011C   90....       MOV     DPTR,#macTxActive
   \   00011F   F0           MOVX    @DPTR,A
    258                HAL_EXIT_CRITICAL_SECTION(s);
   \   000120   92AF         MOV     0xa8.7,C
   \                     ??macTxFrame_3:
   \   000122   02....       LJMP    ?Subroutine4 & 0xFFFF
    259              }
    260            }
    261          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   F8           MOV     R0,A
   \   000001   A3           INC     DPTR
   \   000002   E0           MOVX    A,@DPTR
   \   000003   3400         ADDC    A,#0x0
   \   000005   F9           MOV     R1,A
   \   000006   8882         MOV     DPL,R0
   \   000008   8983         MOV     DPH,R1
   \   00000A   E0           MOVX    A,@DPTR
   \   00000B   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine2:
   \   000000   F0           MOVX    @DPTR,A
   \   000001   92AF         MOV     0xa8.7,C
   \   000003                ; Setup parameters for call to function txGo
   \   000003                ; Setup parameters for call to function txGo
   \   000003   90....       MOV     DPTR,#(??txGo & 0xffff)
   \   000006   74..         MOV     A,#((??txGo >> 16) & 0xff)
   \   000008   22           RET

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine4:
   \   000000   7F01         MOV     R7,#0x1
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   90....       MOV     DPTR,#pMacDataTx
   \   000003   E0           MOVX    A,@DPTR
   \   000004   FA           MOV     R2,A
   \   000005   A3           INC     DPTR
   \   000006   E0           MOVX    A,@DPTR
   \   000007   F583         MOV     DPH,A
   \   000009   8A82         MOV     DPL,R2
   \   00000B   A3           INC     DPTR
   \   00000C   A3           INC     DPTR
   \   00000D   A3           INC     DPTR
   \   00000E   A3           INC     DPTR
   \   00000F   22           RET
    262          
    263          
    264          /*=================================================================================================
    265           * @fn          txCsmaPrep
    266           *
    267           * @brief       Prepare/initialize for a CSMA transmit.
    268           *
    269           * @param       none
    270           *
    271           * @return      none
    272           *=================================================================================================
    273           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    274          static void txCsmaPrep(void)
   \                     ??txCsmaPrep:
    275          {
   \   000000   74F6         MOV     A,#-0xa
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 10
   \   000005                ; Auto size: 0
    276            macTxCsmaBackoffDelay = macRadioRandomByte() & ((1 << macTxBe) - 1);
   \   000005                ; Setup parameters for call to function macRadioRandomByte
   \   000005   90....       MOV     DPTR,#(macRadioRandomByte & 0xffff)
   \   000008   74..         MOV     A,#((macRadioRandomByte >> 16) & 0xff)
   \   00000A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00000D   E9           MOV     A,R1
   \   00000E   FA           MOV     R2,A
   \   00000F   75..01       MOV     ?V0 + 0,#0x1

⌨️ 快捷键说明

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