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

📄 mac_rx_onoff.s51

📁 用IAR开发的ZIGBEE网络路由例子
💻 S51
📖 第 1 页 / 共 3 页
字号:
//   21  */
//   22 
//   23 /* hal */
//   24 #include "hal_defs.h"
//   25 #include "hal_types.h"
//   26 
//   27 /* exported low-level */
//   28 #include "mac_low_level.h"
//   29 
//   30 /* low-level specific */
//   31 #include "mac_rx_onoff.h"
//   32 #include "mac_rx.h"
//   33 #include "mac_tx.h"
//   34 
//   35 /* target specific */
//   36 #include "mac_radio_defs.h"

        ASEGN SFR_AN:DATA:NOROOT,0e1H
// unsigned char volatile __sfr RFST
RFST:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0e9H
// unsigned char volatile __sfr RFIF
RFIF:
        DS 1
//   37 
//   38 /* debug */
//   39 #include "mac_assert.h"
//   40 
//   41 
//   42 /* ------------------------------------------------------------------------------------------------
//   43  *                                         Global Variables
//   44  * ------------------------------------------------------------------------------------------------
//   45  */

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   46 uint8 macRxOnFlag;
macRxOnFlag:
        DS 1

        RSEG XDATA_Z:XDATA:NOROOT(0)
        REQUIRE __INIT_XDATA_Z
//   47 uint8 macRxEnableFlags;
macRxEnableFlags:
        DS 1
//   48 
//   49 
//   50 /**************************************************************************************************
//   51  * @fn          macRxOnOffInit
//   52  *
//   53  * @brief       Initialize variables for rx on/off module.
//   54  *
//   55  * @param       none
//   56  *
//   57  * @return      none
//   58  **************************************************************************************************
//   59  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   60 void macRxOnOffInit(void)
macRxOnOffInit:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function macRxOnOffInit
//   61 {
        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
//   62   macRxEnableFlags = 0;
        CLR	A
        MOV	DPTR,#macRxEnableFlags
        MOVX	@DPTR,A
//   63   macRxOnFlag = 0;
        MOV	DPTR,#macRxOnFlag
        MOVX	@DPTR,A
//   64 }
        SJMP	??Subroutine1_0
        CFI EndBlock cfiBlock0

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiBlock1 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        MOV	0xa8.7,C
??Subroutine1_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 cfiBlock1
//   65 
//   66 
//   67 /**************************************************************************************************
//   68  * @fn          macRxEnable
//   69  *
//   70  * @brief       Set enable flags and then turn on receiver.
//   71  *
//   72  * @param       flags - byte containing rx enable flags to set
//   73  *
//   74  * @return      none
//   75  **************************************************************************************************
//   76  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//   77 void macRxEnable(uint8 flags)
macRxEnable:
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function macRxEnable
//   78 {
        FUNCALL macRxEnable, halAssertHandler
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL macRxEnable, macRxOn
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
//   79   halIntState_t  s;
//   80 
//   81   MAC_ASSERT(flags != 0); /* rx flags not affected */
        JNZ	??macRxEnable_0
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   82 
//   83   /* set enable flags and then turn on receiver */
//   84   HAL_ENTER_CRITICAL_SECTION(s);
??macRxEnable_0:
        MOV	C,0xa8.7
        CLR	A
        MOV	0xE0 /* A   */.0,C
        MOV	R7,A
        CLR	0xa8.7
//   85   macRxEnableFlags |= flags;
        MOV	DPTR,#macRxEnableFlags
        MOVX	A,@DPTR
        ORL	A,R6
        MOVX	@DPTR,A
//   86   macRxOn();
        ; Setup parameters for call to function macRxOn
        MOV	DPTR,#(macRxOn & 0xffff)
        MOV	A,#((macRxOn >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//   87   HAL_EXIT_CRITICAL_SECTION(s);
        MOV	A,R7
        SJMP	??Subroutine2_0
        CFI EndBlock cfiBlock2
//   88 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiBlock3 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        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)))
        MOV	A,R6
??Subroutine2_0:
        MOV	C,0xE0 /* A   */.0
??Subroutine2_1:
        MOV	0xa8.7,C
??Subroutine2_2:
        MOV	R7,#0x1
        LJMP	?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock3
//   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  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  102 void macRxSoftEnable(uint8 flags)
macRxSoftEnable:
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function macRxSoftEnable
//  103 {
        FUNCALL macRxSoftEnable, halAssertHandler
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
//  104   halIntState_t  s;
//  105 
//  106   MAC_ASSERT(flags != 0); /* rx flags not affected */
        JNZ	??macRxSoftEnable_0
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        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:
        MOV	C,0xa8.7
        CLR	A
        MOV	0xE0 /* A   */.0,C
        CLR	0xa8.7
//  110   macRxEnableFlags |= flags;
        MOV	DPTR,#macRxEnableFlags
        MOVX	A,@DPTR
        ORL	A,R6
        MOVX	@DPTR,A
//  111   HAL_EXIT_CRITICAL_SECTION(s);
        SJMP	??Subroutine2_1
        CFI EndBlock cfiBlock4
//  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  */

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  126 void macRxDisable(uint8 flags)
macRxDisable:
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function macRxDisable
//  127 {
        FUNCALL macRxDisable, halAssertHandler
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        FUNCALL macRxDisable, macRxOffRequest
        LOCFRAME XSTACK, 9, STACK
        ARGFRAME XSTACK, 9, STACK
        MOV	A,#-0x9
        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 V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
        MOV	A,R1
        MOV	R6,A
//  128   halIntState_t  s;
//  129 
//  130   MAC_ASSERT(flags != 0); /* rx flags not affected */
        JNZ	??macRxDisable_0
        ; Setup parameters for call to function halAssertHandler
        MOV	DPTR,#(halAssertHandler & 0xffff)
        MOV	A,#((halAssertHandler >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  131 
//  132   /* clear the indicated flags */
//  133   HAL_ENTER_CRITICAL_SECTION(s);
??macRxDisable_0:
        MOV	C,0xa8.7
        CLR	A
        MOV	0xE0 /* A   */.0,C
        CLR	0xa8.7
//  134   macRxEnableFlags &= ~flags;
        MOV	A,R6
        CPL	A
        MOV	R2,A
        MOV	DPTR,#macRxEnableFlags
        MOVX	A,@DPTR
        ANL	A,R2
        MOVX	@DPTR,A
//  135   HAL_EXIT_CRITICAL_SECTION(s);
        MOV	0xa8.7,C
//  136 
//  137   /* turn off the radio if it is allowed */
//  138   macRxOffRequest();
        ; Setup parameters for call to function macRxOffRequest
        MOV	DPTR,#(macRxOffRequest & 0xffff)
        MOV	A,#((macRxOffRequest >> 16) & 0xff)
        LCALL	?BCALL               ; Banked call to: DPTR()
//  139 }
        SJMP	??Subroutine2_2
        CFI EndBlock cfiBlock5
//  140 
//  141 
//  142 /**************************************************************************************************
//  143  * @fn          macRxHardDisable
//  144  *
//  145  * @brief       Clear all enable flags and turn off receiver.
//  146  *
//  147  * @param       none

⌨️ 快捷键说明

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