mac_tx.lst
来自「TI的基于ZIGBEE2006的协议栈」· LST 代码 · 共 1,206 行 · 第 1/5 页
LST
1,206 行
\ 000005 A3 INC DPTR
\ 000006 E0 MOVX A,@DPTR
\ 000007 F583 MOV DPH,A
\ 000009 8A82 MOV DPL,R2
\ 00000B A3 INC DPTR
\ 00000C A3 INC DPTR
\ 00000D A3 INC DPTR
\ 00000E A3 INC DPTR
\ 00000F 22 RET
262
263
264 /*=================================================================================================
265 * @fn txCsmaPrep
266 *
267 * @brief Prepare/initialize for a CSMA transmit.
268 *
269 * @param none
270 *
271 * @return none
272 *=================================================================================================
273 */
\ In segment BANKED_CODE, align 1, keep-with-next
274 static void txCsmaPrep(void)
\ ??txCsmaPrep:
275 {
\ 000000 74F6 MOV A,#-0xa
\ 000002 12.... LCALL ?BANKED_ENTER_XDATA
\ 000005 ; Saved register size: 10
\ 000005 ; Auto size: 0
276 macTxCsmaBackoffDelay = macRadioRandomByte() & ((1 << macTxBe) - 1);
\ 000005 ; Setup parameters for call to function macRadioRandomByte
\ 000005 90.... MOV DPTR,#(macRadioRandomByte & 0xffff)
\ 000008 74.. MOV A,#((macRadioRandomByte >> 16) & 0xff)
\ 00000A 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 00000D E9 MOV A,R1
\ 00000E FA MOV R2,A
\ 00000F 75..01 MOV ?V0 + 0,#0x1
\ 000012 75..00 MOV ?V0 + 1,#0x0
\ 000015 90.... MOV DPTR,#macTxBe
\ 000018 E0 MOVX A,@DPTR
\ 000019 78.. MOV R0,#?V0 + 0
\ 00001B 12.... LCALL ?S_SHL
\ 00001E E5.. MOV A,?V0 + 0
\ 000020 14 DEC A
\ 000021 5A ANL A,R2
\ 000022 90.... MOV DPTR,#macTxCsmaBackoffDelay
\ 000025 F0 MOVX @DPTR,A
277
278 if (macTxType == MAC_TX_TYPE_SLOTTED_CSMA)
\ 000026 90.... MOV DPTR,#macTxType
\ 000029 E0 MOVX A,@DPTR
\ 00002A 7007 JNZ ??txCsmaPrep_1
279 {
280 MAC_RADIO_TX_PREP_CSMA_SLOTTED();
\ 00002C ; Setup parameters for call to function macCspTxPrepCsmaSlotted
\ 00002C 90.... MOV DPTR,#(macCspTxPrepCsmaSlotted & 0xffff)
\ 00002F 74.. MOV A,#((macCspTxPrepCsmaSlotted >> 16) & 0xff)
\ 000031 8005 SJMP ??txCsmaPrep_2
281 }
282 else
283 {
284 MAC_RADIO_TX_PREP_CSMA_UNSLOTTED();
\ ??txCsmaPrep_1:
\ 000033 ; Setup parameters for call to function macCspTxPrepCsmaUnslotted
\ 000033 90.... MOV DPTR,#(macCspTxPrepCsmaUnslotted & 0xffff)
\ 000036 74.. MOV A,#((macCspTxPrepCsmaUnslotted >> 16) & 0xff)
\ ??txCsmaPrep_2:
\ 000038 12.... LCALL ?BCALL ; Banked call to: DPTR()
285 }
286 }
\ 00003B 7F02 MOV R7,#0x2
\ 00003D 02.... LJMP ?BANKED_LEAVE_XDATA
287
288
289 /*=================================================================================================
290 * @fn txGo
291 *
292 * @brief Start a transmit going.
293 *
294 * @param none
295 *
296 * @return none
297 *=================================================================================================
298 */
\ In segment BANKED_CODE, align 1, keep-with-next
299 static void txGo(void)
\ ??txGo:
300 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
301 /*
302 * If execution has reached this point, any transmitted ACK has long since completed. It is
303 * possible though that there is still a pending callback. If so, it is irrelevant and needs to
304 * be canceled at this point.
305 */
306 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()
307
308 /* based on type of transmit, call the correct "go" functionality */
309 if (macTxType == MAC_TX_TYPE_SLOTTED)
\ 00000E 90.... MOV DPTR,#macTxType
\ 000011 E0 MOVX A,@DPTR
\ 000012 6402 XRL A,#0x2
\ 000014 7007 JNZ ??txGo_1
310 {
311 MAC_RADIO_TX_GO_SLOTTED();
\ 000016 ; Setup parameters for call to function macCspTxGoSlotted
\ 000016 90.... MOV DPTR,#(macCspTxGoSlotted & 0xffff)
\ 000019 74.. MOV A,#((macCspTxGoSlotted >> 16) & 0xff)
\ 00001B 8005 SJMP ??txGo_2
312 }
313 else
314 {
315 txCsmaGo();
\ ??txGo_1:
\ 00001D ; Setup parameters for call to function txCsmaGo
\ 00001D 90.... MOV DPTR,#(??txCsmaGo & 0xffff)
\ 000020 74.. MOV A,#((??txCsmaGo >> 16) & 0xff)
\ ??txGo_2:
\ 000022 80.. SJMP ?Subroutine5
316 }
317 }
\ In segment BANKED_CODE, align 1, keep-with-next
\ ?Subroutine5:
\ 000000 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000003 80.. SJMP ??Subroutine3_0
318
319
320 /*=================================================================================================
321 * @fn txCsmaGo
322 *
323 * @brief Start a CSMA transmit going.
324 *
325 * @param none
326 *
327 * @return none
328 *=================================================================================================
329 */
\ In segment BANKED_CODE, align 1, keep-with-next
330 static void txCsmaGo(void)
\ ??txCsmaGo:
331 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
332 if (macTxType == MAC_TX_TYPE_SLOTTED_CSMA)
\ 000004 90.... MOV DPTR,#macTxType
\ 000007 E0 MOVX A,@DPTR
\ 000008 701B JNZ ??txCsmaGo_1
333 {
334 if (macTxCsmaBackoffDelay >= macDataTxTimeAvailable())
\ 00000A ; Setup parameters for call to function macDataTxTimeAvailable
\ 00000A 90.... MOV DPTR,#(macDataTxTimeAvailable & 0xffff)
\ 00000D 74.. MOV A,#((macDataTxTimeAvailable >> 16) & 0xff)
\ 00000F 12.... LCALL ?BCALL ; Banked call to: DPTR()
\ 000012 E9 MOV A,R1
\ 000013 FA MOV R2,A
\ 000014 90.... MOV DPTR,#macTxCsmaBackoffDelay
\ 000017 E0 MOVX A,@DPTR
\ 000018 C3 CLR C
\ 000019 9A SUBB A,R2
\ 00001A 4009 JC ??txCsmaGo_1
335 {
336 txComplete(MAC_NO_TIME);
\ 00001C ; Setup parameters for call to function txComplete
\ 00001C 791C MOV R1,#0x1c
\ 00001E 90.... MOV DPTR,#(??txComplete & 0xffff)
\ 000021 74.. MOV A,#((??txComplete >> 16) & 0xff)
\ 000023 8005 SJMP ??txCsmaGo_2
337 return;
338 }
339 }
340
341 MAC_RADIO_TX_GO_CSMA();
\ ??txCsmaGo_1:
\ 000025 ; Setup parameters for call to function macCspTxGoCsma
\ 000025 90.... MOV DPTR,#(macCspTxGoCsma & 0xffff)
\ 000028 74.. MOV A,#((macCspTxGoCsma >> 16) & 0xff)
\ ??txCsmaGo_2:
\ 00002A 80.. SJMP ?Subroutine5
342 }
343
344
345 /**************************************************************************************************
346 * @fn macTxFrameRetransmit
347 *
348 * @brief Retransmit the last frame.
349 *
350 * @param none
351 *
352 * @return none
353 **************************************************************************************************
354 */
\ In segment BANKED_CODE, align 1, keep-with-next
355 void macTxFrameRetransmit(void)
\ macTxFrameRetransmit:
356 {
\ 000000 C082 PUSH DPL
\ 000002 C083 PUSH DPH
\ 000004 ; Saved register size: 2
\ 000004 ; Auto size: 0
357 txRetransmitFlag = 1;
\ 000004 7401 MOV A,#0x1
\ 000006 90.... MOV DPTR,#??txRetransmitFlag
\ 000009 F0 MOVX @DPTR,A
358 macTxFrame(macTxType);
\ 00000A ; Setup parameters for call to function macTxFrame
\ 00000A 90.... MOV DPTR,#macTxType
\ 00000D E0 MOVX A,@DPTR
\ 00000E F9 MOV R1,A
\ 00000F 90.... MOV DPTR,#(macTxFrame & 0xffff)
\ 000012 74.. MOV A,#((macTxFrame >> 16) & 0xff)
\ 000014 REQUIRE ?Subroutine5
\ 000014 ; // Fall through to label ?Subroutine5
359 }
360
361
362 /**************************************************************************************************
363 * @fn macTxStartQueuedFrame
364 *
365 * @brief See if there is a queued frame waiting to transmit. If so, initiate
366 * the transmit now.
367 *
368 * @param none
369 *
370 * @return none
371 **************************************************************************************************
372 */
\ In segment BANKED_CODE, align 1, keep-with-next
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?