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

📄 mac_rx_onoff.lst

📁 用IAR开发的ZIGBEE网络路由例子
💻 LST
📖 第 1 页 / 共 3 页
字号:
   \                                 In segment BANKED_CODE, align 1, keep-with-next
     77          void macRxEnable(uint8 flags)
   \                     macRxEnable:
     78          {
   \   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
     79            halIntState_t  s;
     80          
     81            MAC_ASSERT(flags != 0); /* rx flags not affected */
   \   000007   7008         JNZ     ??macRxEnable_0
   \   000009                ; Setup parameters for call to function halAssertHandler
   \   000009   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   00000C   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   00000E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
     82          
     83            /* set enable flags and then turn on receiver */
     84            HAL_ENTER_CRITICAL_SECTION(s);
   \                     ??macRxEnable_0:
   \   000011   A2AF         MOV     C,0xa8.7
   \   000013   E4           CLR     A
   \   000014   92E0         MOV     0xE0 /* A   */.0,C
   \   000016   FF           MOV     R7,A
   \   000017   C2AF         CLR     0xa8.7
     85            macRxEnableFlags |= flags;
   \   000019   90....       MOV     DPTR,#macRxEnableFlags
   \   00001C   E0           MOVX    A,@DPTR
   \   00001D   4E           ORL     A,R6
   \   00001E   F0           MOVX    @DPTR,A
     86            macRxOn();
   \   00001F                ; Setup parameters for call to function macRxOn
   \   00001F   90....       MOV     DPTR,#(macRxOn & 0xffff)
   \   000022   74..         MOV     A,#((macRxOn >> 16) & 0xff)
   \   000024   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
     87            HAL_EXIT_CRITICAL_SECTION(s);
   \   000027   EF           MOV     A,R7
   \   000028   80..         SJMP    ??Subroutine2_0
     88          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine2:
   \   000000   EE           MOV     A,R6
   \                     ??Subroutine2_0:
   \   000001   A2E0         MOV     C,0xE0 /* A   */.0
   \                     ??Subroutine2_1:
   \   000003   92AF         MOV     0xa8.7,C
   \                     ??Subroutine2_2:
   \   000005   7F01         MOV     R7,#0x1
   \   000007   02....       LJMP    ?BANKED_LEAVE_XDATA
     89          
     90          
     91          /**************************************************************************************************
     92           * @fn          macRxSoftEnable
     93           *
     94           * @brief       Set enable flags but don't turn on the receiver.  Useful to leave the receiver
     95           *              on after a transmit, but without turning it on immediately.
     96           *
     97           * @param       flags - byte containing rx enable flags to set
     98           *
     99           * @return      none
    100           **************************************************************************************************
    101           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    102          void macRxSoftEnable(uint8 flags)
   \                     macRxSoftEnable:
    103          {
   \   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
    104            halIntState_t  s;
    105          
    106            MAC_ASSERT(flags != 0); /* rx flags not affected */
   \   000007   7008         JNZ     ??macRxSoftEnable_0
   \   000009                ; Setup parameters for call to function halAssertHandler
   \   000009   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   00000C   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   00000E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    107          
    108            /* set the enable flags but do not turn on the receiver */
    109            HAL_ENTER_CRITICAL_SECTION(s);
   \                     ??macRxSoftEnable_0:
   \   000011   A2AF         MOV     C,0xa8.7
   \   000013   E4           CLR     A
   \   000014   92E0         MOV     0xE0 /* A   */.0,C
   \   000016   C2AF         CLR     0xa8.7
    110            macRxEnableFlags |= flags;
   \   000018   90....       MOV     DPTR,#macRxEnableFlags
   \   00001B   E0           MOVX    A,@DPTR
   \   00001C   4E           ORL     A,R6
   \   00001D   F0           MOVX    @DPTR,A
    111            HAL_EXIT_CRITICAL_SECTION(s);
   \   00001E   80..         SJMP    ??Subroutine2_1
    112          }
    113          
    114          
    115          /**************************************************************************************************
    116           * @fn          macRxDisable
    117           *
    118           * @brief       Clear indicated rx enable flags.  If all flags are clear, turn off receiver
    119           *              unless there is an active receive or transmit.
    120           *
    121           * @param       flags - byte containg rx enable flags to clear
    122           *
    123           * @return      none
    124           **************************************************************************************************
    125           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    126          void macRxDisable(uint8 flags)
   \                     macRxDisable:
    127          {
   \   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
    128            halIntState_t  s;
    129          
    130            MAC_ASSERT(flags != 0); /* rx flags not affected */
   \   000007   7008         JNZ     ??macRxDisable_0
   \   000009                ; Setup parameters for call to function halAssertHandler
   \   000009   90....       MOV     DPTR,#(halAssertHandler & 0xffff)
   \   00000C   74..         MOV     A,#((halAssertHandler >> 16) & 0xff)
   \   00000E   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    131          
    132            /* clear the indicated flags */
    133            HAL_ENTER_CRITICAL_SECTION(s);
   \                     ??macRxDisable_0:
   \   000011   A2AF         MOV     C,0xa8.7
   \   000013   E4           CLR     A
   \   000014   92E0         MOV     0xE0 /* A   */.0,C
   \   000016   C2AF         CLR     0xa8.7
    134            macRxEnableFlags &= ~flags;
   \   000018   EE           MOV     A,R6
   \   000019   F4           CPL     A
   \   00001A   FA           MOV     R2,A
   \   00001B   90....       MOV     DPTR,#macRxEnableFlags
   \   00001E   E0           MOVX    A,@DPTR
   \   00001F   5A           ANL     A,R2
   \   000020   F0           MOVX    @DPTR,A
    135            HAL_EXIT_CRITICAL_SECTION(s);
   \   000021   92AF         MOV     0xa8.7,C
    136          
    137            /* turn off the radio if it is allowed */
    138            macRxOffRequest();
   \   000023                ; Setup parameters for call to function macRxOffRequest
   \   000023   90....       MOV     DPTR,#(macRxOffRequest & 0xffff)
   \   000026   74..         MOV     A,#((macRxOffRequest >> 16) & 0xff)
   \   000028   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    139          }
   \   00002B   80..         SJMP    ??Subroutine2_2
    140          
    141          
    142          /**************************************************************************************************
    143           * @fn          macRxHardDisable
    144           *
    145           * @brief       Clear all enable flags and turn off receiver.
    146           *
    147           * @param       none
    148           *
    149           * @return      none
    150           **************************************************************************************************
    151           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    152          void macRxHardDisable(void)
   \                     macRxHardDisable:
    153          {
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    154            halIntState_t  s;
    155          
    156            HAL_ENTER_CRITICAL_SECTION(s);
   \   000004   A2AF         MOV     C,0xa8.7
   \   000006   E4           CLR     A
   \   000007   92E0         MOV     0xE0 /* A   */.0,C
   \   000009   C2AF         CLR     0xa8.7
    157          
    158            macRxEnableFlags = 0;
   \   00000B   E4           CLR     A
   \   00000C   90....       MOV     DPTR,#macRxEnableFlags
   \   00000F   F0           MOVX    @DPTR,A
    159            macRxOnFlag = 0;
   \   000010   90....       MOV     DPTR,#macRxOnFlag
   \   000013   12....       LCALL   ?Subroutine0 & 0xFFFF
    160          
    161            /* force receiver off */
    162            MAC_RADIO_RXTX_OFF();
    163            MAC_RADIO_FLUSH_RX_FIFO();
    164            MAC_DEBUG_TURN_OFF_RX_LED();
    165          
    166            HAL_EXIT_CRITICAL_SECTION(s);
   \                     ??CrossCallReturnLabel_0:
   \   000016   92AF         MOV     0xa8.7,C
    167          
    168            /* clean up after being forced off */
    169            macRxHaltCleanup();
   \   000018                ; Setup parameters for call to function macRxHaltCleanup
   \   000018   90....       MOV     DPTR,#(macRxHaltCleanup & 0xffff)
   \   00001B   74..         MOV     A,#((macRxHaltCleanup >> 16) & 0xff)
   \   00001D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    170          }
   \   000020   02....       LJMP    ??Subroutine1_0 & 0xFFFF

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   F0           MOVX    @DPTR,A
   \   000001   75E1E5       MOV     0xe1,#-0x1b
   \   000004   75E1E6       MOV     0xe1,#-0x1a
   \   000007   75E1E6       MOV     0xe1,#-0x1a
   \   00000A   22           RET
    171          
    172          
    173          /**************************************************************************************************
    174           * @fn          macRxOnRequest
    175           *
    176           * @brief       Turn on the receiver if any rx enable flag is set.
    177           *
    178           * @param       none
    179           *
    180           * @return      none
    181           **************************************************************************************************
    182           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    183          void macRxOnRequest(void)
   \                     macRxOnRequest:
    184          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    185            halIntState_t  s;

⌨️ 快捷键说明

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