📄 mac_rx.lst
字号:
204 */
\ In segment BANKED_CODE, align 1, keep-with-next
205 void macRxRadioPowerUpInit(void)
\ macRxRadioPowerUpInit:
206 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
207 /* set threshold at initial value */
208 MAC_RADIO_SET_RX_THRESHOLD(RX_THRESHOLD_START_LEN);
\ 000004 7405 MOV A,#0x5
\ 000006 90DF4F MOV DPTR,#-0x20b1
\ 000009 F0 MOVX @DPTR,A
209
210 /* clear any accidental threshold interrupt that happened as part of power up sequence */
211 MAC_RADIO_CLEAR_RX_THRESHOLD_INTERRUPT_FLAG();
\ 00000A 75E9DF MOV 0xe9,#-0x21
212
213 /* enable threshold interrupts */
214 MAC_RADIO_ENABLE_RX_THRESHOLD_INTERRUPT();
\ 00000D ; Setup parameters for call to function macMcuOrRFIM
\ 00000D 7920 MOV R1,#0x20
\ 00000F 90.... MOV DPTR,#(macMcuOrRFIM & 0xffff)
\ 000012 74.. MOV A,#((macMcuOrRFIM >> 16) & 0xff)
\ 000014 02.... LJMP ?Subroutine20 & 0xFFFF
215 }
216
217
218 /**************************************************************************************************
219 * @fn macRxTxReset
220 *
221 * @brief Reset the receive state.
222 *
223 * @param none
224 *
225 * @return none
226 **************************************************************************************************
227 */
\ In segment BANKED_CODE, align 1, keep-with-next
228 void macRxTxReset(void)
\ macRxTxReset:
229 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
230 /* forces receiver off, cleans up by calling macRxHaltCleanup() and macTxHaltCleanup() */
231 macRxHardDisable();
\ 000004 ; Setup parameters for call to function macRxHardDisable
\ 000004 90.... MOV DPTR,#(macRxHardDisable & 0xffff)
\ 000007 74.. MOV A,#((macRxHardDisable >> 16) & 0xff)
\ 000009 12.... LCALL ?BCALL ; Banked call to: DPTR()
232
233 /*
234 * Note : transmit does not require any reset logic
235 * beyond what macRxHardDisable() provides.
236 */
237
238 /* restore deault filter mode to off */
239 macRxFilter = RX_FILTER_OFF;
\ 00000C E4 CLR A
\ 00000D 90.... MOV DPTR,#macRxFilter
\ 000010 F0 MOVX @DPTR,A
240
241 /* return promiscuous mode to default off state */
242 macRxPromiscuousMode(MAC_PROMISCUOUS_MODE_OFF);
\ 000011 ; Setup parameters for call to function macRxPromiscuousMode
\ 000011 F9 MOV R1,A
\ 000012 90.... MOV DPTR,#(macRxPromiscuousMode & 0xffff)
\ 000015 74.. MOV A,#((macRxPromiscuousMode >> 16) & 0xff)
\ 000017 80.. SJMP ?Subroutine20
243 }
244
245
246 /**************************************************************************************************
247 * @fn macRxHaltCleanup
248 *
249 * @brief Cleanup up the receive logic after receiver is forced off.
250 *
251 * @param none
252 *
253 * @return none
254 **************************************************************************************************
255 */
\ In segment BANKED_CODE, align 1, keep-with-next
256 void macRxHaltCleanup(void)
\ macRxHaltCleanup:
257 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
258 rxResetFlag = 1;
\ 000004 7401 MOV A,#0x1
\ 000006 90.... MOV DPTR,#??rxResetFlag
\ 000009 F0 MOVX @DPTR,A
259 if (!rxIsrActiveFlag)
\ 00000A 90.... MOV DPTR,#??rxIsrActiveFlag
\ 00000D E0 MOVX A,@DPTR
\ 00000E 700D JNZ ??macRxHaltCleanup_0
260 {
261 rxHaltCleanupFinalStep();
\ 000010 ; Setup parameters for call to function rxHaltCleanupFinalStep
\ 000010 90.... MOV DPTR,#(??rxHaltCleanupFinalStep & 0xffff)
\ 000013 74.. MOV A,#((??rxHaltCleanupFinalStep >> 16) & 0xff)
\ 000015 12.... LCALL ?BCALL ; Banked call to: DPTR()
262 rxResetFlag = 0;
\ 000018 E4 CLR A
\ 000019 90.... MOV DPTR,#??rxResetFlag
\ 00001C F0 MOVX @DPTR,A
263 }
264 }
\ ??macRxHaltCleanup_0:
\ 00001D 80.. SJMP ??Subroutine20_0
265
266
267 /*=================================================================================================
268 * @fn rxHaltCleanupFinalStep
269 *
270 * @brief Required cleanup if receiver is halted in the middle of a receive.
271 *
272 * @param none
273 *
274 * @return none
275 *=================================================================================================
276 */
\ In segment BANKED_CODE, align 1, keep-with-next
277 static void rxHaltCleanupFinalStep(void)
\ ??rxHaltCleanupFinalStep:
278 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
279 /* cancel any upcoming ACK transmit complete callback */
280 MAC_RADIO_CANCEL_ACK_TX_DONE_CALLBACK();
\ 000004 ; Setup parameters for call to function macMcuAndRFIM
\ 000004 79EF MOV R1,#-0x11
\ 000006 90.... MOV DPTR,#(macMcuAndRFIM & 0xffff)
\ 000009 74.. MOV A,#((macMcuAndRFIM >> 16) & 0xff)
\ 00000B 12.... LCALL ?BCALL ; Banked call to: DPTR()
281
282 /* set start of frame threshold */
283 MAC_RADIO_SET_RX_THRESHOLD(RX_THRESHOLD_START_LEN);
\ 00000E 7405 MOV A,#0x5
\ 000010 90DF4F MOV DPTR,#-0x20b1
\ 000013 F0 MOVX @DPTR,A
284
285 /* flush the receive FIFO */
286 MAC_RADIO_FLUSH_RX_FIFO();
\ 000014 75E1E6 MOV 0xe1,#-0x1a
\ 000017 75E1E6 MOV 0xe1,#-0x1a
287
288 /* clear any receive interrupt that happened to squeak through */
289 MAC_RADIO_CLEAR_RX_THRESHOLD_INTERRUPT_FLAG();
\ 00001A 75E9DF MOV 0xe9,#-0x21
290
291 /* if data buffer has been allocated, free it */
292 if (pRxBuf != NULL)
\ 00001D 90.... MOV DPTR,#??pRxBuf
\ 000020 E0 MOVX A,@DPTR
\ 000021 7002 JNZ ??rxHaltCleanupFinalStep_1
\ 000023 A3 INC DPTR
\ 000024 E0 MOVX A,@DPTR
\ ??rxHaltCleanupFinalStep_1:
\ 000025 6010 JZ ??rxHaltCleanupFinalStep_2
293 {
294 MEM_FREE((uint8 *) pRxBuf);
\ 000027 ; Setup parameters for call to function macDataRxMemFree
\ 000027 90.... MOV DPTR,#??pRxBuf
\ 00002A E0 MOVX A,@DPTR
\ 00002B FA MOV R2,A
\ 00002C A3 INC DPTR
\ 00002D E0 MOVX A,@DPTR
\ 00002E FB MOV R3,A
\ 00002F 90.... MOV DPTR,#(macDataRxMemFree & 0xffff)
\ 000032 74.. MOV A,#((macDataRxMemFree >> 16) & 0xff)
\ 000034 12.... LCALL ?BCALL ; Banked call to: DPTR()
295 }
296 pRxBuf = NULL; /* needed to indicate buffer is no longer allocated */
\ ??rxHaltCleanupFinalStep_2:
\ 000037 90.... MOV DPTR,#??pRxBuf
\ 00003A E4 CLR A
\ 00003B F0 MOVX @DPTR,A
\ 00003C A3 INC DPTR
\ 00003D 12.... LCALL ?Subroutine1 & 0xFFFF
297
298 pFuncRxState = &rxStartIsr;
299
300 /* if receive was active, perform the post receive updates */
301 if (macRxActive || macRxOutgoingAckFlag)
\ ??CrossCallReturnLabel_3:
\ 000040 90.... MOV DPTR,#macRxActive
\ 000043 E0 MOVX A,@DPTR
\ 000044 7006 JNZ ??rxHaltCleanupFinalStep_3
\ 000046 90.... MOV DPTR,#macRxOutgoingAckFlag
\ 000049 E0 MOVX A,@DPTR
\ 00004A 6011 JZ ??rxHaltCleanupFinalStep_4
302 {
303 macRxActive = MAC_RX_ACTIVE_NO_ACTIVITY;
\ ??rxHaltCleanupFinalStep_3:
\ 00004C E4 CLR A
\ 00004D 90.... MOV DPTR,#macRxActive
\ 000050 F0 MOVX @DPTR,A
304 macRxOutgoingAckFlag = 0;
\ 000051 90.... MOV DPTR,#macRxOutgoingAckFlag
\ 000054 F0 MOVX @DPTR,A
305
306 rxPostRxUpdates();
\ 000055 ; Setup parameters for call to function rxPostRxUpdates
\ 000055 90.... MOV DPTR,#(??rxPostRxUpdates & 0xffff)
\ 000058 74.. MOV A,#((??rxPostRxUpdates >> 16) & 0xff)
\ 00005A 12.... LCALL ?BCALL ; Banked call to: DPTR()
307 }
308 }
\ ??rxHaltCleanupFinalStep_4:
\ 00005D 80.. SJMP ??Subroutine20_0
309
310
311 /**************************************************************************************************
312 * @fn macRxThresholdIsr
313 *
314 * @brief Interrupt service routine called when bytes in FIFO reach threshold value.
315 * It implements a state machine for receiving a packet.
316 *
317 * @param none
318 *
319 * @return none
320 **************************************************************************************************
321 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -