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

📄 mac_tx.lst

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    387              HAL_EXIT_CRITICAL_SECTION(s);
    388              txGo();
   \                     ??CrossCallReturnLabel_5:
   \   00002C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00002F   8002         SJMP    ??macTxStartQueuedFrame_3
    389            }
    390            else
    391            {
    392              HAL_EXIT_CRITICAL_SECTION(s);
   \                     ??macTxStartQueuedFrame_2:
   \   000031   92AF         MOV     0xa8.7,C
    393            }
    394          }
   \                     ??macTxStartQueuedFrame_3:
   \   000033   80..         SJMP    ??Subroutine3_0
    395          
    396          
    397          /**************************************************************************************************
    398           * @fn          macTxChannelBusyCallback
    399           *
    400           * @brief       This callback is executed if a CSMA transmit was attempted but the channel
    401           *              was busy.
    402           *
    403           * @param       none
    404           *
    405           * @return      none
    406           **************************************************************************************************
    407           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    408          void macTxChannelBusyCallback(void)
   \                     macTxChannelBusyCallback:
    409          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    410            MAC_ASSERT((macTxType == MAC_TX_TYPE_SLOTTED_CSMA) || (macTxType == MAC_TX_TYPE_UNSLOTTED_CSMA));
   \   000004   90....       MOV     DPTR,#macTxType
   \   000007   E0           MOVX    A,@DPTR
   \   000008   600C         JZ      ??macTxChannelBusyCallback_0
   \   00000A   6401         XRL     A,#0x1
   \   00000C   6008         JZ      ??macTxChannelBusyCallback_0
   \   00000E                ; Setup parameters for call to function halAssertHandler
   \   00000E   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   000011   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   000013   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    411          
    412            /*  clear channel assement failed, follow through with CSMA algorithm */
    413            nb++;
   \                     ??macTxChannelBusyCallback_0:
   \   000016   90....       MOV     DPTR,#??nb
   \   000019   E0           MOVX    A,@DPTR
   \   00001A   04           INC     A
   \   00001B   F0           MOVX    @DPTR,A
    414            if (nb > macPib.maxCsmaBackoffs)
   \   00001C   90....       MOV     DPTR,#(macPib + 27)
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   C0E0         PUSH    A
   \   000022   90....       MOV     DPTR,#??nb
   \   000025   E0           MOVX    A,@DPTR
   \   000026   FA           MOV     R2,A
   \   000027   D0E0         POP     A
   \   000029   C3           CLR     C
   \   00002A   9A           SUBB    A,R2
   \   00002B   5009         JNC     ??macTxChannelBusyCallback_1
    415            {
    416              txComplete(MAC_CHANNEL_ACCESS_FAILURE);
   \   00002D                ; Setup parameters for call to function txComplete
   \   00002D   79E1         MOV     R1,#-0x1f
   \   00002F   90....       MOV     DPTR,#(??txComplete & 0xffff)
   \   000032   74..         MOV     A,#((??txComplete >> 16) & 0xff)
   \   000034   8035         SJMP    ??macTxChannelBusyCallback_2
    417            }
    418            else
    419            {
    420              macTxBe = MIN(macTxBe+1, macPib.maxBe);
   \                     ??macTxChannelBusyCallback_1:
   \   000036   90....       MOV     DPTR,#macTxBe
   \   000039   E0           MOVX    A,@DPTR
   \   00003A   F8           MOV     R0,A
   \   00003B   7401         MOV     A,#0x1
   \   00003D   28           ADD     A,R0
   \   00003E   08           INC     R0
   \   00003F   E4           CLR     A
   \   000040   3400         ADDC    A,#0x0
   \   000042   F9           MOV     R1,A
   \   000043   90....       MOV     DPTR,#(macPib + 39)
   \   000046   E0           MOVX    A,@DPTR
   \   000047   FA           MOV     R2,A
   \   000048   E8           MOV     A,R0
   \   000049   9A           SUBB    A,R2
   \   00004A   E9           MOV     A,R1
   \   00004B   9400         SUBB    A,#0x0
   \   00004D   C3           CLR     C
   \   00004E   65D0         XRL     A,PSW
   \   000050   33           RLC     A
   \   000051   5006         JNC     ??macTxChannelBusyCallback_3
   \   000053   90....       MOV     DPTR,#macTxBe
   \   000056   E0           MOVX    A,@DPTR
   \   000057   04           INC     A
   \   000058   FA           MOV     R2,A
   \                     ??macTxChannelBusyCallback_3:
   \   000059   EA           MOV     A,R2
   \   00005A   90....       MOV     DPTR,#macTxBe
   \   00005D   F0           MOVX    @DPTR,A
    421              txCsmaPrep();
   \   00005E                ; Setup parameters for call to function txCsmaPrep
   \   00005E   90....       MOV     DPTR,#(??txCsmaPrep & 0xffff)
   \   000061   74..         MOV     A,#((??txCsmaPrep >> 16) & 0xff)
   \   000063   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    422              txCsmaGo();
   \   000066                ; Setup parameters for call to function txCsmaGo
   \   000066   90....       MOV     DPTR,#(??txCsmaGo & 0xffff)
   \   000069   74..         MOV     A,#((??txCsmaGo >> 16) & 0xff)
   \                     ??macTxChannelBusyCallback_2:
   \   00006B   02....       LJMP    ?Subroutine5 & 0xFFFF
    423            }
    424          }
    425          
    426          
    427          /**************************************************************************************************
    428           * @fn          macTxDoneCallback
    429           *
    430           * @brief       This callback is executed when transmit completes.
    431           *
    432           * @param       none
    433           *
    434           * @return      none
    435           **************************************************************************************************
    436           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    437          void macTxDoneCallback(void)
   \                     macTxDoneCallback:
    438          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    439            halIntState_t  s;
    440          
    441            /*
    442             *  There is a small chance this function could be called twice for a single transmit.
    443             *  To prevent logic from executing twice, the state variable macTxActive is used as
    444             *  a gating mechanism to guarantee single time execution.
    445             */
    446            HAL_ENTER_CRITICAL_SECTION(s);
   \   000005   A2AF         MOV     C,0xa8.7
   \   000007   E4           CLR     A
   \   000008   92E0         MOV     0xE0 /* A   */.0,C
   \   00000A   FE           MOV     R6,A
   \   00000B   C2AF         CLR     0xa8.7
    447            if (macTxActive == MAC_TX_ACTIVE_GO)
   \   00000D   90....       MOV     DPTR,#macTxActive
   \   000010   E0           MOVX    A,@DPTR
   \   000011   6483         XRL     A,#0x83
   \   000013   702B         JNZ     ??macTxDoneCallback_0
    448            {
    449              /* see if ACK was requested */
    450              if (!txAckReq)
   \   000015   90....       MOV     DPTR,#??txAckReq
   \   000018   E0           MOVX    A,@DPTR
   \   000019   7014         JNZ     ??macTxDoneCallback_1
    451              {
    452                macTxActive = MAC_TX_ACTIVE_DONE;
   \   00001B   7484         MOV     A,#-0x7c
   \   00001D   90....       MOV     DPTR,#macTxActive
   \   000020   F0           MOVX    @DPTR,A
    453                HAL_EXIT_CRITICAL_SECTION(s);
   \   000021   92AF         MOV     0xa8.7,C
    454          
    455                /* ACK was not requested, transmit is complete */
    456                txComplete(MAC_SUCCESS);
   \   000023                ; Setup parameters for call to function txComplete
   \   000023   7900         MOV     R1,#0x0
   \   000025   90....       MOV     DPTR,#(??txComplete & 0xffff)
   \   000028   74..         MOV     A,#((??txComplete >> 16) & 0xff)
   \   00002A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00002D   8013         SJMP    ??macTxDoneCallback_2
    457              }
    458              else
    459              {
    460                /*
    461                 *  ACK was requested - must wait to receive it.  A timer is set
    462                 *  to expire after the timeout duration for waiting for an ACK.
    463                 *  If an ACK is received, the function macTxAckReceived() is called.
    464                 *  If an ACK is not received within the timeout period,
    465                 *  the function macTxAckTimeoutCallback() is called.
    466                 */
    467                macTxActive = MAC_TX_ACTIVE_LISTEN_FOR_ACK;
   \                     ??macTxDoneCallback_1:
   \   00002F   7485         MOV     A,#-0x7b
   \   000031   90....       MOV     DPTR,#macTxActive
   \   000034   F0           MOVX    @DPTR,A
    468                MAC_RADIO_TX_REQUEST_ACK_TIMEOUT_CALLBACK();
   \   000035                ; Setup parameters for call to function macCspTxRequestAckTimeoutCallback
   \   000035   90....       MOV     DPTR,#(macCspTxRequestAckTimeoutCallback & 0xffff)
   \   000038   74..         MOV     A,#((macCspTxRequestAckTimeoutCallback >> 16) & 0xff)
   \   00003A   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    469                HAL_EXIT_CRITICAL_SECTION(s);
   \   00003D   EE           MOV     A,R6
   \   00003E   A2E0         MOV     C,0xE0 /* A   */.0
    470              }
    471            }
    472            else
    473            {
    474              HAL_EXIT_CRITICAL_SECTION(s);
   \                     ??macTxDoneCallback_0:
   \   000040   92AF         MOV     0xa8.7,C
    475            }
    476          }
   \                     ??macTxDoneCallback_2:
   \   000042   80..         SJMP    ?Subroutine4
    477          
    478          
    479          /**************************************************************************************************
    480           * @fn          macTxAckReceivedCallback
    481           *
    482           * @brief       This function is called by the receive logic when an ACK is received and
    483           *              transmit logic is listening for an ACK.
    484           *
    485           * @param       seqn        - sequence number of received ACK
    486           * @param       pendingFlag - set if pending flag of ACK is set, cleared otherwise
    487           *
    488           * @return      none
    489           **************************************************************************************************
    490           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    491          void macTxAckReceivedCallback(uint8 seqn, uint8 pendingFlag)
   \                     macTxAckReceivedCallback:
    492          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   E9           MOV     A,R1
   \   000006   FE           MOV     R6,A
   \   000007   EA           MOV     A,R2
   \   000008   FF           MOV     R7,A
    493            halIntState_t  s;
    494          
    495            /* only process if listening for an ACK; critical section prevents race condition pr

⌨️ 快捷键说明

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