📄 mac_rx_onoff.s51
字号:
// 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 + -