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

📄 mac_tx.s51

📁 cc2430应用实例
💻 S51
📖 第 1 页 / 共 5 页
字号:
        CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond4) CFA_SP SP+0
        CFI (cfiCond4) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker5 Using cfiCommon1
        CFI (cfiPicker5) NoFunction
        CFI (cfiPicker5) Picker
        MOV	R0,A
        INC	DPTR
        MOVX	A,@DPTR
        ADDC	A,#0x0
        MOV	R1,A
        MOV	DPL,R0
        MOV	DPH,R1
        MOVX	A,@DPTR
        RET
        CFI EndBlock cfiCond3
        CFI EndBlock cfiCond4
        CFI EndBlock cfiPicker5
//  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  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  274 static void txCsmaPrep(void)
??txCsmaPrep:
        CFI Block cfiBlock6 Using cfiCommon0
        CFI Function ??txCsmaPrep
//  275 {
        FUNCALL ??txCsmaPrep, macRadioRandomByte
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ??txCsmaPrep, macCspTxPrepCsmaSlotted
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        FUNCALL ??txCsmaPrep, macCspTxPrepCsmaUnslotted
        LOCFRAME XSTACK, 10, STACK
        ARGFRAME XSTACK, 10, STACK
        MOV	A,#-0xa
        LCALL	?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 0
//  276   macTxCsmaBackoffDelay = macRadioRandomByte() & ((1 << macTxBe) - 1);
        ; Setup parameters for call to function macRadioRandomByte
        MOV	DPTR,#(macRadioRandomByte & 0xffff)
        MOV	A,#((macRadioRandomByte >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R2,A
        MOV	?V0 + 0,#0x1
        MOV	?V0 + 1,#0x0
        MOV	DPTR,#macTxBe
        MOVX	A,@DPTR
        MOV	R0,#?V0 + 0
        LCALL	?S_SHL
        MOV	A,?V0 + 0
        DEC	A
        ANL	A,R2
        MOV	DPTR,#macTxCsmaBackoffDelay
        MOVX	@DPTR,A
//  277 
//  278   if (macTxType == MAC_TX_TYPE_SLOTTED_CSMA)
        MOV	DPTR,#macTxType
        MOVX	A,@DPTR
        JNZ	??txCsmaPrep_1
//  279   {
//  280     MAC_RADIO_TX_PREP_CSMA_SLOTTED();
        ; Setup parameters for call to function macCspTxPrepCsmaSlotted
        MOV	DPTR,#(macCspTxPrepCsmaSlotted & 0xffff)
        MOV	A,#((macCspTxPrepCsmaSlotted >> 16) & 0xff)
        SJMP	??txCsmaPrep_2
//  281   }
//  282   else
//  283   {
//  284     MAC_RADIO_TX_PREP_CSMA_UNSLOTTED();
??txCsmaPrep_1:
        ; Setup parameters for call to function macCspTxPrepCsmaUnslotted
        MOV	DPTR,#(macCspTxPrepCsmaUnslotted & 0xffff)
        MOV	A,#((macCspTxPrepCsmaUnslotted >> 16) & 0xff)
??txCsmaPrep_2:
        LCALL	?BCALL               ; Banked call to: DPTR()
//  285   }
//  286 }
        MOV	R7,#0x2
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock6
//  287 
//  288 
//  289 /*=================================================================================================
//  290  * @fn          txGo
//  291  *
//  292  * @brief       Start a transmit going.
//  293  *
//  294  * @param       none
//  295  *
//  296  * @return      none
//  297  *=================================================================================================
//  298  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  299 static void txGo(void)
??txGo:
        CFI Block cfiBlock7 Using cfiCommon0
        CFI Function ??txGo
//  300 {
        FUNCALL ??txGo, macMcuAndRFIM
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??txGo, macCspTxGoSlotted
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??txGo, ??txCsmaGo
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  301   /*
//  302    *  If execution has reached this point, any transmitted ACK has long since completed.  It is
//  303    *  possible though that there is still a pending callback.  If so, it is irrelevant and needs to
//  304    *  be canceled at this point.
//  305    */
//  306   MAC_RADIO_CANCEL_ACK_TX_DONE_CALLBACK();
        ; Setup parameters for call to function macMcuAndRFIM
        MOV	R1,#-0x11
        MOV	DPTR,#(macMcuAndRFIM & 0xffff)
        MOV	A,#((macMcuAndRFIM >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  307 
//  308   /* based on type of transmit, call the correct "go" functionality */
//  309   if (macTxType == MAC_TX_TYPE_SLOTTED)
        MOV	DPTR,#macTxType
        MOVX	A,@DPTR
        XRL	A,#0x2
        JNZ	??txGo_1
//  310   {
//  311     MAC_RADIO_TX_GO_SLOTTED();
        ; Setup parameters for call to function macCspTxGoSlotted
        MOV	DPTR,#(macCspTxGoSlotted & 0xffff)
        MOV	A,#((macCspTxGoSlotted >> 16) & 0xff)
        SJMP	??txGo_2
//  312   }
//  313   else
//  314   {
//  315     txCsmaGo();
??txGo_1:
        ; Setup parameters for call to function txCsmaGo
        MOV	DPTR,#(??txCsmaGo & 0xffff)
        MOV	A,#((??txCsmaGo >> 16) & 0xff)
??txGo_2:
        SJMP	?Subroutine5
        CFI EndBlock cfiBlock7
//  316   }
//  317 }
//  318 
//  319 
//  320 /*=================================================================================================
//  321  * @fn          txCsmaGo
//  322  *
//  323  * @brief       Start a CSMA transmit going.
//  324  *
//  325  * @param       none
//  326  *
//  327  * @return      none
//  328  *=================================================================================================
//  329  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  330 static void txCsmaGo(void)
??txCsmaGo:
        CFI Block cfiBlock8 Using cfiCommon0
        CFI Function ??txCsmaGo
//  331 {
        FUNCALL ??txCsmaGo, macDataTxTimeAvailable
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??txCsmaGo, ??txComplete
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        FUNCALL ??txCsmaGo, macCspTxGoCsma
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  332   if (macTxType == MAC_TX_TYPE_SLOTTED_CSMA)
        MOV	DPTR,#macTxType
        MOVX	A,@DPTR
        JNZ	??txCsmaGo_1
//  333   {
//  334     if (macTxCsmaBackoffDelay >= macDataTxTimeAvailable())
        ; Setup parameters for call to function macDataTxTimeAvailable
        MOV	DPTR,#(macDataTxTimeAvailable & 0xffff)
        MOV	A,#((macDataTxTimeAvailable >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
        MOV	A,R1
        MOV	R2,A
        MOV	DPTR,#macTxCsmaBackoffDelay
        MOVX	A,@DPTR
        CLR	C
        SUBB	A,R2
        JC	??txCsmaGo_1
//  335     {
//  336       txComplete(MAC_NO_TIME);
        ; Setup parameters for call to function txComplete
        MOV	R1,#0x1c
        MOV	DPTR,#(??txComplete & 0xffff)
        MOV	A,#((??txComplete >> 16) & 0xff)
        SJMP	??txCsmaGo_2
//  337       return;
//  338     }
//  339   }
//  340 
//  341   MAC_RADIO_TX_GO_CSMA();
??txCsmaGo_1:
        ; Setup parameters for call to function macCspTxGoCsma
        MOV	DPTR,#(macCspTxGoCsma & 0xffff)
        MOV	A,#((macCspTxGoCsma >> 16) & 0xff)
??txCsmaGo_2:
        SJMP	?Subroutine5
        CFI EndBlock cfiBlock8
//  342 }
//  343 
//  344 
//  345 /**************************************************************************************************
//  346  * @fn          macTxFrameRetransmit
//  347  *
//  348  * @brief       Retransmit the last frame.
//  349  *
//  350  * @param       none
//  351  *
//  352  * @return      none
//  353  **************************************************************************************************
//  354  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  355 void macTxFrameRetransmit(void)
macTxFrameRetransmit:
        CFI Block cfiBlock9 Using cfiCommon0
        CFI Function macTxFrameRetransmit
//  356 {
        FUNCALL macTxFrameRetransmit, macTxFrame
        LOCFRAME ISTACK, 2, STACK
        ARGFRAME ISTACK, 2, STACK
        PUSH	DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH	DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  357   txRetransmitFlag = 1;
        MOV	A,#0x1
        MOV	DPTR,#??txRetransmitFlag
        MOVX	@DPTR,A
//  358   macTxFrame(macTxType);
        ; Setup parameters for call to function macTxFrame
        MOV	DPTR,#macTxType
        MOVX	A,@DPTR
        MOV	R1,A
        MOV	DPTR,#(macTxFrame & 0xffff)
        MOV	A,#((macTxFrame >> 16) & 0xff)
        CFI EndBlock cfiBlock9
        REQUIRE ?Subroutine5
        ; // Fall through to label ?Subroutine5
//  359 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine5:
        CFI Block cfiBlock10 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        LCALL	?BCALL               ; Banked call to: DPTR()
        SJMP	??Subroutine3_0
        CFI EndBlock cfiBlock10

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine3:
        CFI Block cfiBlock11 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CLR	A
        MOV	DPTR,#macTxActive
        MOVX	@DPTR,A
        MOV	DPTR,#??txRetransmitFlag
        MOVX	@DPTR,A
??Subroutine3_0:
        POP	DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP	DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP	?BRET
        CFI EndBlock cfiBlock11
//  360 
//  361 
//  362 /**************************************************************************************************
//  363  * @fn          macTxStartQueuedFrame
//  364  *
//  365  * @brief       See if there is a queued frame waiting to transmit.  If so, initiate
//  366  *              the transmit now.
//  367  *
//  368  * @param       none
//  369  *

⌨️ 快捷键说明

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