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

📄 mac_rx_engine.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \   00000B   4025         JC      ??mrxForceRxOff_0
    202              mschAddTask(mschReserveTask(), MAC_TASK_PRI_HIGHEST, mrxForceRxOffTask, MRX_RESET_ON_COUNTER);
   \   00000D                ; Setup parameters for call to function mschAddTask
   \   00000D   75....       MOV     ?V0 + 0,#(mrxForceRxOffTask & 0xff)
   \   000010   75....       MOV     ?V0 + 1,#((mrxForceRxOffTask >> 8) & 0xff)
   \   000013   75....       MOV     ?V0 + 2,#((mrxForceRxOffTask >> 16) & 0xff)
   \   000016   78..         MOV     R0,#?V0 + 0
   \   000018   12....       LCALL   ?PUSH_XSTACK_I_THREE
   \   00001B   7A03         MOV     R2,#0x3
   \   00001D   EA           MOV     A,R2
   \   00001E   C0E0         PUSH    A
   \   000020                ; Setup parameters for call to function mschReserveTask
   \   000020   12....       LCALL   mschReserveTask & 0xFFFF
   \   000023   7C01         MOV     R4,#0x1
   \   000025   E4           CLR     A
   \   000026   FD           MOV     R5,A
   \   000027   D0E0         POP     A
   \   000029   FA           MOV     R2,A
   \   00002A   12....       LCALL   mschAddTask & 0xFFFF
   \   00002D   7403         MOV     A,#0x3
   \   00002F   12....       LCALL   ?DEALLOC_XSTACK8
    203          } // mrxForceRxOff
   \                     ??mrxForceRxOff_0:
   \   000032   7F03         MOV     R7,#0x3
   \   000034   02....       LJMP    ?BANKED_LEAVE_XDATA
    204          
    205          
    206          
    207          
    208          //-------------------------------------------------------------------------------------------------------
    209          //  void mrxForceRxOffTask(MAC_TASK_INFO *pTask)
    210          //
    211          //  DESCRIPTION:
    212          //      This task forces RX off by issuing a SRFOFF command strobe, regardless of whether the SFD pin
    213          //      state. If SFD was high before the command was issued, an RX engine cleanup is performed.
    214          //
    215          //  TASK DATA:
    216          //      Flags (MRX_RESET_ON_COUNTER)
    217          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    218          void mrxForceRxOffTask(MAC_TASK_INFO   *pTask) NEAR {
   \                     mrxForceRxOffTask:
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
   \   000005   EA           MOV     A,R2
   \   000006   FE           MOV     R6,A
   \   000007   EB           MOV     A,R3
   \   000008   FF           MOV     R7,A
    219              DISABLE_GLOBAL_INT();
   \   000009   C2AF         CLR     0xa8.7
    220              if (pTask->taskData & MRX_RESET_ON_COUNTER) mrxInfo.onCounter = 0;
   \   00000B   8E82         MOV     DPL,R6
   \   00000D   8F83         MOV     DPH,R7
   \   00000F   A3           INC     DPTR
   \   000010   A3           INC     DPTR
   \   000011   A3           INC     DPTR
   \   000012   E0           MOVX    A,@DPTR
   \   000013   A2E0         MOV     C,0xE0 /* A   */.0
   \   000015   5005         JNC     ??mrxForceRxOffTask_0
   \   000017   E4           CLR     A
   \   000018   90....       MOV     DPTR,#(mrxInfo + 13)
   \   00001B   F0           MOVX    @DPTR,A
    221              ISRFOFF;
   \                     ??mrxForceRxOffTask_0:
   \   00001C   75E1E5       MOV     0xe1,#-0x1b
    222              mrxResetRxEngine();
   \   00001F                ; Setup parameters for call to function mrxResetRxEngine
   \   00001F   12....       LCALL   mrxResetRxEngine & 0xFFFF
    223              ENABLE_GLOBAL_INT();
   \   000022   D2AF         SETB    0xa8.7
    224              mschRemoveTask(pTask->priority, MSCH_KEEP_TASK_IN_PROGRESS_BM);
   \   000024                ; Setup parameters for call to function mschRemoveTask
   \   000024   7A02         MOV     R2,#0x2
   \   000026   8E82         MOV     DPL,R6
   \   000028   8F83         MOV     DPH,R7
   \   00002A   A3           INC     DPTR
   \   00002B   A3           INC     DPTR
   \   00002C   A3           INC     DPTR
   \   00002D   A3           INC     DPTR
   \   00002E   A3           INC     DPTR
   \   00002F   A3           INC     DPTR
   \   000030   A3           INC     DPTR
   \   000031   A3           INC     DPTR
   \   000032   E0           MOVX    A,@DPTR
   \   000033   F9           MOV     R1,A
   \   000034   12....       LCALL   mschRemoveTask & 0xFFFF
    225          } // mrxForceRxOffTask
   \   000037                REQUIRE ?Subroutine2
   \   000037                ; // Fall through to label ?Subroutine2

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine2:
   \   000000   7F01         MOV     R7,#0x1
   \   000002   02....       LJMP    ?BANKED_LEAVE_XDATA
    226          
    227          
    228          
    229          
    230          static ROOT void mrxStartPayloadDmaTransfer(void) {
    231              pDma1234Configs[DMA_RFRX_CHANNEL - 1].destMsb = HIBYTE(mrxInfo.pPacket->mdi.pMsdu);
    232              pDma1234Configs[DMA_RFRX_CHANNEL - 1].destLsb = LOBYTE(mrxInfo.pPacket->mdi.pMsdu);
    233              pDma1234Configs[DMA_RFRX_CHANNEL - 1].lenLsb = mrxInfo.length;
    234          
    235              while (RXFIFOCNT < 2);
    236          
    237              DMA_ARM_CHANNEL(DMA_RFRX_CHANNEL);
    238              DMA_START_CHANNEL(DMA_RFRX_CHANNEL);
    239          
    240              DISABLE_FIFOP_INT_BIT();
    241          }
    242          
    243          
    244          
    245          
    246          //-------------------------------------------------------------------------------------------------------
    247          //  void mrxResetRxEngine(void)
    248          //
    249          //  DESCRIPTION:
    250          //      Resets the RX engine by clearing the RX FIFO, freeing any recently acquired resources, and
    251          //      resetting the RX engine state.
    252          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    253          ROOT void mrxResetRxEngine(void) {
   \                     mrxResetRxEngine:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
    254              DISABLE_GLOBAL_INT();
   \   000004   C2AF         CLR     0xa8.7
    255          
    256              // Free resources
    257              switch (mrxInfo.state) {
   \   000006   90....       MOV     DPTR,#(mrxInfo + 12)
   \   000009   E0           MOVX    A,@DPTR
   \   00000A   12....       LCALL   ?UC_SWITCH_DENSE
   \                     `?<Jumptable for mrxResetRxEngine>_0`:
   \   00000D   01           DB        1
   \   00000E   02           DB        2
   \   00000F   ....         DW        ??mrxResetRxEngine_0
   \   000011   ....         DW        ??mrxResetRxEngine_1
   \   000013   ....         DW        ??mrxResetRxEngine_2
   \   000015   ....         DW        ??mrxResetRxEngine_3
    258              case MRX_STATE_LEN_FCF_SEQ:
    259                  // Nothing happened yet, so just flush the FIFO
    260                  break;
    261              case MRX_STATE_FCS:
    262                  DMA_ABORT_CHANNEL(DMA_RFRX_CHANNEL);
   \                     ??mrxResetRxEngine_2:
   \   000017   75D690       MOV     0xd6,#-0x70
    263                  // No break here!
    264          
    265              case MRX_STATE_ADDR:
    266                  mschReleaseTask(mrxInfo.taskNumber);
   \                     ??mrxResetRxEngine_1:
   \   00001A                ; Setup parameters for call to function mschReleaseTask
   \   00001A   90....       MOV     DPTR,#(mrxInfo + 10)
   \   00001D   E0           MOVX    A,@DPTR
   \   00001E   F9           MOV     R1,A
   \   00001F   12....       LCALL   mschReleaseTask
    267                  mrxInfo.taskNumber = NO_TASK;
   \   000022   74FF         MOV     A,#-0x1
   \   000024   F0           MOVX    @DPTR,A
    268                  mrxpReleasePacket(mrxInfo.pPacket);
   \   000025                ; Setup parameters for call to function mrxpReleasePacket
   \   000025   90....       MOV     DPTR,#(mrxInfo + 8)
   \   000028   E0           MOVX    A,@DPTR
   \   000029   FA           MOV     R2,A
   \   00002A   A3           INC     DPTR
   \   00002B   E0           MOVX    A,@DPTR
   \   00002C   FB           MOV     R3,A
   \   00002D   12....       LCALL   mrxpReleasePacket
    269                  mrxInfo.pPacket = NULL;
   \   000030   90....       MOV     DPTR,#(mrxInfo + 8)
   \   000033   E4           CLR     A
   \   000034   F0           MOVX    @DPTR,A
   \   000035   A3           INC     DPTR
   \   000036   F0           MOVX    @DPTR,A
    270                  // No break here!
    271          
    272              case MRX_STATE_DISCARD:
    273                  mrxDecrOnCounter();
   \                     ??mrxResetRxEngine_3:
   \   000037                ; Setup parameters for call to function mrxDecrOnCounter
   \   000037   90....       MOV     DPTR,#(mrxDecrOnCounter & 0xffff)
   \   00003A   74..         MOV     A,#((mrxDecrOnCounter >> 16) & 0xff)
   \   00003C   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    274                  break;
    275              }
    276          
    277              // Flush the RX FIFO twice (chip bug)
    278              ISFLUSHRX;
   \                     ??mrxResetRxEngine_0:
   \   00003F   75E1E6       MOV     0xe1,#-0x1a
    279              ISFLUSHRX;
   \   000042   75E1E6       MOV     0xe1,#-0x1a
    280          
    281              // Clear the FIFOP interrupt flag
    282              CLEAR_FIFOP_INT_BIT();
   \   000045                ; Setup parameters for call to function SET_RFIF
   \   000045   79DF         MOV     R1,#-0x21
   \   000047   12....       LCALL   SET_RFIF
    283              CLEAR_RFIF_INT();
   \   00004A   759B00       MOV     0x9b,#0x0
   \   00004D                ; Setup parameters for call to function SET_RFIM
   \   00004D   A991         MOV     R1,0x91
   \   00004F   12....       LCALL   SET_RFIM
    284              if (mrxInfo.state == MRX_STATE_FCS) ENABLE_FIFOP_INT_BIT();
   \   000052   90....       MOV     DPTR,#(mrxInfo + 12)
   \   000055   E0           MOVX    A,@DPTR
   \   000056   6402         XRL     A,#0x2
   \   000058   7008         JNZ     ??mrxResetRxEngine_4
   \   00005A                ; Setup parameters for call to function SET_RFIM
   \   00005A   7420         MOV     A,#0x20
   \   00005C   4591         ORL     A,0x91
   \   00005E   F9           MOV     R1,A
   \   00005F   12....       LCALL   SET_RFIM
    285          
    286              // Reset the RX engine state
    287              mrxInfo.state = MRX_STATE_LEN_FCF_SEQ;
   \                     ??mrxResetRxEngine_4:
   \   000062   E4           CLR     A
   \   000063   F0           MOVX    @DPTR,A
    288          
    289              ENABLE_GLOBAL_INT();
   \   000064   D2AF         SETB    0xa8.7
    290          
    291          } // mrxResetRxEngine
   \   000066   D083         POP     DPH
   \   000068   D082         POP     DPL
   \   00006A   22           RET
    292          
    293          
    294          
    295          
    296          /*******************************************************************************************************
    297           *******************************************************************************************************
    298           **************************          PACKET RECEPTION AND PROCESSING          **************************
    299           *******************************************************************************************************
    300           *******************************************************************************************************/
    301          
    302          
    303          
    304          
    305          //-------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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