📄 mac_rx_onoff.lst
字号:
\ 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 + -