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

📄 mac_backoff_timer.lst

📁 CC2430上开关控制灯和温度传感器采集两个例子
💻 LST
📖 第 1 页 / 共 5 页
字号:
    289          uint32 macBackoffTimerGetTrigger(void)
   \                     macBackoffTimerGetTrigger:
    290          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    291            return(backoffTimerTrigger);
   \   000005   90....       MOV     DPTR,#??backoffTimerTrigger
   \   000008   78..         MOV     R0,#?V0 + 0
   \   00000A   12....       LCALL   ?L_MOV_X
   \   00000D   AA..         MOV     R2,?V0 + 0
   \   00000F   AB..         MOV     R3,?V0 + 1
   \   000011   AC..         MOV     R4,?V0 + 2
   \   000013   AD..         MOV     R5,?V0 + 3
   \   000015   02....       LJMP    ?Subroutine1 & 0xFFFF
    292          }
    293          
    294          
    295          /**************************************************************************************************
    296           * @fn          macBackoffTimerSetTrigger
    297           *
    298           * @brief       Sets the trigger count for the backoff counter.  A callback is exectuted when
    299           *              the backoff count reaches the trigger
    300           *
    301           * @param       triggerBackoff - backoff count for new trigger
    302           *
    303           * @return      none
    304           **************************************************************************************************
    305           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    306          void macBackoffTimerSetTrigger(uint32 triggerBackoff)
   \                     macBackoffTimerSetTrigger:
    307          {
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 0
   \   000005   8A..         MOV     ?V0 + 0,R2
   \   000007   8B..         MOV     ?V0 + 1,R3
   \   000009   8C..         MOV     ?V0 + 2,R4
   \   00000B   8D..         MOV     ?V0 + 3,R5
    308            halIntState_t  s;
    309          
    310            MAC_ASSERT(triggerBackoff < backoffTimerRollover); /* trigger backoff must be less than rollover backoff */
   \   00000D   90....       MOV     DPTR,#??backoffTimerRollover
   \   000010   78..         MOV     R0,#?V0 + 4
   \   000012   12....       LCALL   ?L_MOV_X
   \   000015   78..         MOV     R0,#?V0 + 4
   \   000017   79..         MOV     R1,#?V0 + 0
   \   000019   12....       LCALL   ?UL_GT
   \   00001C   4008         JC      ??macBackoffTimerSetTrigger_0
   \   00001E                ; Setup parameters for call to function halAssertHandler
   \   00001E   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   000021   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   000023   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    311          
    312            HAL_ENTER_CRITICAL_SECTION(s);
   \                     ??macBackoffTimerSetTrigger_0:
   \   000026   A2AF         MOV     C,0xa8.7
   \   000028   E4           CLR     A
   \   000029   92E0         MOV     0xE0 /* A   */.0,C
   \   00002B   FE           MOV     R6,A
   \   00002C   C2AF         CLR     0xa8.7
    313            backoffTimerTrigger = triggerBackoff;
   \   00002E   90....       MOV     DPTR,#??backoffTimerTrigger
   \   000031   78..         MOV     R0,#?V0 + 0
   \   000033   12....       LCALL   ?L_MOV_TO_X
    314            if (triggerBackoff > MAC_RADIO_BACKOFF_COUNT())
   \   000036                ; Setup parameters for call to function macMcuOverflowCount
   \   000036   90....       MOV     DPTR,#(macMcuOverflowCount & 0xffff)
   \   000039   74..         MOV     A,#((macMcuOverflowCount >> 16) & 0xff)
   \   00003B   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   00003E   8A..         MOV     ?V0 + 4,R2
   \   000040   8B..         MOV     ?V0 + 5,R3
   \   000042   8C..         MOV     ?V0 + 6,R4
   \   000044   8D..         MOV     ?V0 + 7,R5
   \   000046   78..         MOV     R0,#?V0 + 0
   \   000048   79..         MOV     R1,#?V0 + 4
   \   00004A   12....       LCALL   ?UL_GT
   \   00004D   5008         JNC     ??macBackoffTimerSetTrigger_1
    315            {
    316              compareState = COMPARE_STATE_TRIGGER;
   \   00004F   7402         MOV     A,#0x2
   \   000051   90....       MOV     DPTR,#??compareState
   \   000054   F0           MOVX    @DPTR,A
    317              MAC_RADIO_BACKOFF_SET_COMPARE(triggerBackoff);
   \   000055                ; Setup parameters for call to function macMcuOverflowSetCompare
   \   000055   8016         SJMP    ??macBackoffTimerSetTrigger_2
    318            }
    319            else
    320            {
    321              if (triggerBackoff == 0)
   \                     ??macBackoffTimerSetTrigger_1:
   \   000057   90....       MOV     DPTR,#__Constant_0
   \   00005A   78..         MOV     R0,#?V0 + 0
   \   00005C   12....       LCALL   ?L_EQ_X
   \   00005F   7004         JNZ     ??macBackoffTimerSetTrigger_3
    322              {
    323                compareState = COMPARE_STATE_ROLLOVER_AND_TRIGGER;
   \   000061   7403         MOV     A,#0x3
   \   000063   8002         SJMP    ??macBackoffTimerSetTrigger_4
    324              }
    325              else
    326              {
    327                compareState = COMPARE_STATE_ROLLOVER_AND_ARM_TRIGGER;
   \                     ??macBackoffTimerSetTrigger_3:
   \   000065   7405         MOV     A,#0x5
   \                     ??macBackoffTimerSetTrigger_4:
   \   000067   12....       LCALL   ??Subroutine0_0 & 0xFFFF
    328              }
    329              MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
   \                     ??CrossCallReturnLabel_2:
   \   00006A   12....       LCALL   ?L_MOV_X
   \                     ??macBackoffTimerSetTrigger_2:
   \   00006D   02....       LJMP    ?Subroutine2 & 0xFFFF
    330            }
    331            HAL_EXIT_CRITICAL_SECTION(s);
    332          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   7401         MOV     A,#0x1
   \                     ??Subroutine0_0:
   \   000002   90....       MOV     DPTR,#??compareState
   \   000005   F0           MOVX    @DPTR,A
   \   000006                ; Setup parameters for call to function macMcuOverflowSetCompare
   \   000006                ; Setup parameters for call to function macMcuOverflowSetCompare
   \   000006                ; Setup parameters for call to function macMcuOverflowSetCompare
   \   000006   90....       MOV     DPTR,#??backoffTimerRollover
   \   000009   78..         MOV     R0,#?V0 + 0
   \   00000B   22           RET
    333          
    334          
    335          /**************************************************************************************************
    336           * @fn          macBackoffTimerCancelTrigger
    337           *
    338           * @brief       Cancels the trigger for the backoff counter.
    339           *
    340           * @param       none
    341           *
    342           * @return      none
    343           **************************************************************************************************
    344           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    345          void macBackoffTimerCancelTrigger(void)
   \                     macBackoffTimerCancelTrigger:
    346          {
   \   000000   74F4         MOV     A,#-0xc
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 12
   \   000005                ; Auto size: 0
    347            halIntState_t  s;
    348          
    349            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
    350            compareState = COMPARE_STATE_ROLLOVER;
   \   00000D   12....       LCALL   ?Subroutine0 & 0xFFFF
    351            MAC_RADIO_BACKOFF_SET_COMPARE(backoffTimerRollover);
   \                     ??CrossCallReturnLabel_0:
   \   000010   12....       LCALL   ?L_MOV_X
   \   000013   AA..         MOV     R2,?V0 + 0
   \   000015   AB..         MOV     R3,?V0 + 1
   \   000017   AC..         MOV     R4,?V0 + 2
   \   000019   AD..         MOV     R5,?V0 + 3
   \   00001B   90....       MOV     DPTR,#(macMcuOverflowSetCompare & 0xffff)
   \   00001E   74..         MOV     A,#((macMcuOverflowSetCompare >> 16) & 0xff)
   \   000020   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    352            HAL_EXIT_CRITICAL_SECTION(s);
   \   000023   EE           MOV     A,R6
   \   000024   A2E0         MOV     C,0xE0 /* A   */.0
   \   000026   92AF         MOV     0xa8.7,C
    353          }
   \   000028                REQUIRE ?Subroutine1
   \   000028                ; // Fall through to label ?Subroutine1
    354          
    355          
    356          /**************************************************************************************************
    357           * @fn          macBackoffTimerRealign
    358           *
    359           * @brief       
    360           *
    361           *  Realignment is accomplished by adjusting the internal time base to align with the expected
    362           *  reception time of an incoming frame.  The difference between the expected reception time and
    363           *  the actual reception time is computed and this difference is used to adjust the hardware
    364           *  timer count and backoff count.
    365           *
    366           *  The realignment is based on the SFD signal for the incoming frame.  The timer is aligned
    367           *  by adjusting it with the difference between the expected SFD time and the actual SFD time.
    368           *
    369           * @param       none
    370           *
    371           * @return      none
    372           **************************************************************************************************
    373           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    374          int32 macBackoffTimerRealign(macRx_t *pMsg)
   \                     macBackoffTimerRealign:
    375          {
   \   000000   74F0         MOV     A,#-0x10
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 16
   \   000005                ; Auto size: 4
   \   000005   74FC         MOV     A,#-0x4
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
   \   00000A   EA           MOV     A,R2
   \   00000B   FE           MOV     R6,A
   \   00000C   EB           MOV     A,R3
   \   00000D   FF           MOV     R7,A
    376            uint16 timerDelayTicks;
    377            int32 backoffDelta;
    378            int32 backoffCount;
    379          
    380            MAC_ASSERT_STATEMENT( MAC_RADIO_FORCE_TX_DONE_IF_PENDING(); ); /* force TX to complete if just pending */
   \   00000E                ; Setup parameters for call to function macCspForceTxDoneIfPending
   \   00000E   90....       MOV     DPTR,#(macCspForceTxDoneIfPending & 0xffff)
   \   000011   74..         MOV     A,#((macCspForceTxDoneIfPending >> 16) & 0xff)
   \   000013   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    381            MAC_ASSERT(!MAC_TX_IS_PHYSICALLY_ACTIVE()); /* realignment during actual transmit corrupts timing */
   \   000016   90....       MOV     DPTR,#macTxActive
   \   000019   E0           MOVX    A,@DPTR
   \   00001A   A2E7         MOV     C,0xE0 /* A   */.7
   \   00001C   5008         JNC     ??macBackoffTimerRealign_0
   \   00001E                ; Setup parameters for call to function halAssertHandler

⌨️ 快捷键说明

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