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

📄 mac_scheduler.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 3 页
字号:
##############################################################################
#                                                                            #
# IAR 8051 C/C++ Compiler V7.20H/W32                   16/Jan/2007  15:33:49 #
# Copyright 2004-2006 IAR Systems. All rights reserved.                      #
#                                                                            #
#    Core               =  plain                                             #
#    Code model         =  banked                                            #
#    Data model         =  large                                             #
#    Calling convention =  xdata reentrant                                   #
#    Constant location  =  data                                              #
#    Dptr setup         =  1,16                                              #
#    Source file        =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\lib\mac\CC2430\mac_scheduler.c                 #
#    Command line       =  -I "C:\Program Files\IAR Systems\Embedded         #
#                          Workbench 4.05 Evaluation version\8051\INC\" -I   #
#                          "C:\Program Files\IAR Systems\Embedded Workbench  #
#                          4.05 Evaluation version\8051\SRC\LIB\" -I         #
#                          "C:\Program Files\IAR Systems\Embedded Workbench  #
#                          4.05 Evaluation version\8051\INC\CLIB\" -I        #
#                          E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\..\..\..\include\ -I          #
#                          E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\..\..\..\include\mac\cc2430\  #
#                          -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_E #
#                          ngine\Test\mac\mac_loc\..\..\..\include\hal\cc243 #
#                          0\ -I E:\公司产品资料\Zigbee\cc2431\cc2431定位\LO #
#                          C_Engine\Test\mac\mac_loc\..\..\..\apps\ -D       #
#                          USE_LED -D SOC_BB -lCN "E:\公司产品资料\Zigbee\cc #
#                          2431\cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_B #
#                          B, hex\List\" -lA "E:\公司产品资料\Zigbee\cc2431\ #
#                          cc2431定位\LOC_Engine\Test\mac\mac_loc\SOC_BB,    #
#                          hex\List\" -o "E:\公司产品资料\Zigbee\cc2431\cc24 #
#                          31定位\LOC_Engine\Test\mac\mac_loc\SOC_BB,        #
#                          hex\Obj\" -e -s9 --debug --core=plain             #
#                          --dptr=16,1 --data_model=large                    #
#                          --code_model=banked --calling_convention=xdata_re #
#                          entrant --place_constants=data --nr_virtual_regs  #
#                          8 E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_En #
#                          gine\lib\mac\CC2430\mac_scheduler.c               #
#    List file          =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\SOC_BB,                       #
#                          hex\List\mac_scheduler.lst                        #
#    Object file        =  E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engi #
#                          ne\Test\mac\mac_loc\SOC_BB,                       #
#                          hex\Obj\mac_scheduler.r51                         #
#                                                                            #
#                                                                            #
##############################################################################

E:\公司产品资料\Zigbee\cc2431\cc2431定位\LOC_Engine\lib\mac\CC2430\mac_scheduler.c
      1          /*******************************************************************************************************
      2           *                                                                                                     *
      3           *        **********                                                                                   *
      4           *       ************                                                                                  *
      5           *      ***        ***                                                                                 *
      6           *      ***   +++   ***                                                                                *
      7           *      ***   + +   ***                                                                                *
      8           *      ***   +                         CHIPCON CC2430 INTEGRATED 802.15.4 MAC AND PHY                 *
      9           *      ***   + +   ***                                 Task Scheduler                                 *
     10           *      ***   +++   ***                                                                                *
     11           *      ***        ***                                                                                 *
     12           *       ************                                                                                  *
     13           *        **********                                                                                   *
     14           *                                                                                                     *
     15           *******************************************************************************************************
     16           * CONFIDENTIAL                                                                                        *
     17           * The use of this file is restricted by the signed MAC software license agreement.                    *
     18           *                                                                                                     *
     19           * Copyright Chipcon AS, 2005                                                                          *
     20           *******************************************************************************************************
     21           * This module contains the task scheduler used by the MAC layer. A task can begin at every backoff    *
     22           * slot boundary, assuming that no tasks of same or higher priorities running:                         *
     23           *                                                                                                     *
     24           *                        Task queues:     Task pool:                                                  *
     25           *                     |  H+<T             |   TT   |                                                  *
     26           * Execution priority: |  H <TTT    <----- |TT TTT T|                                                  *
     27           *                     |  M <TT            |T TT TTT|                                                  *
     28           *                     V  L <TTTTT         |--------|                                                  *
     29           *                           ^                                                                         *
     30           *                           |                                                                         *
     31           *                           One-way linked list, FIFO                                                 *
     32           *******************************************************************************************************/
     33          #include <mac_headers.h>
     34          
     35          
     36          //-------------------------------------------------------------------------------------------------------
     37          // Scheduler data

   \                                 In segment PM0_XDATA, align 1
     38          __no_init MAC_TASK_INFO   pMacTasks[MAC_TASK_COUNT] @ "PM0_XDATA";
   \                     pMacTasks:
   \   000000                DS 200

   \                                 In segment PM0_XDATA, align 1
     39          __no_init MAC_TASK_QUEUE   pMacTaskQueues[MAC_TASK_PRIORITY_COUNT] @ "PM0_XDATA";
   \                     pMacTaskQueues:
   \   000000                DS 12
     40          //-------------------------------------------------------------------------------------------------------
     41          
     42          
     43          
     44          
     45          //-------------------------------------------------------------------------------------------------------
     46          //  void mschInit(void)
     47          //
     48          //  DESCRIPTION:
     49          //      Initializes the task pool and the task queues.
     50          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
     51          ROOT void mschInit(void) {
   \                     mschInit:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
     52              UINT8 n;
     53          
     54              // Initialize the task queues
     55              for (n = 0; n < MAC_TASK_PRIORITY_COUNT; n++) {
   \   000004   78..         MOV     R0,#(pMacTaskQueues & 0xff)
   \   000006   79..         MOV     R1,#((pMacTaskQueues >> 8) & 0xff)
   \   000008   7A04         MOV     R2,#0x4
     56                  pMacTaskQueues[n].firstTask = NO_TASK;
   \                     ??mschInit_0:
   \   00000A   74FF         MOV     A,#-0x1
   \   00000C   8882         MOV     DPL,R0
   \   00000E   8983         MOV     DPH,R1
   \   000010   F0           MOVX    @DPTR,A
     57                  pMacTaskQueues[n].lastTask = NO_TASK;
   \   000011   A3           INC     DPTR
   \   000012   F0           MOVX    @DPTR,A
     58                  pMacTaskQueues[n].taskInProgress = FALSE;
   \   000013   E4           CLR     A
   \   000014   8882         MOV     DPL,R0
   \   000016   8983         MOV     DPH,R1
   \   000018   A3           INC     DPTR
   \   000019   A3           INC     DPTR
   \   00001A   F0           MOVX    @DPTR,A
     59              }
   \   00001B   E8           MOV     A,R0
   \   00001C   2403         ADD     A,#0x3
   \   00001E   08           INC     R0
   \   00001F   08           INC     R0
   \   000020   08           INC     R0
   \   000021   E9           MOV     A,R1
   \   000022   3400         ADDC    A,#0x0
   \   000024   F9           MOV     R1,A
   \   000025   1A           DEC     R2
   \   000026   EA           MOV     A,R2
   \   000027   70E1         JNZ     ??mschInit_0
     60          
     61              // Initialize the task pool
     62              for (n = 0; n < MAC_TASK_COUNT; n++) {
   \   000029   7A00         MOV     R2,#0x0
   \   00002B   78..         MOV     R0,#((pMacTasks + 6) & 0xff)
   \   00002D   79..         MOV     R1,#(((pMacTasks + 6) >> 8) & 0xff)
     63                  pMacTasks[n].occupied = FALSE;
   \                     ??mschInit_1:
   \   00002F   E4           CLR     A
   \   000030   8882         MOV     DPL,R0
   \   000032   8983         MOV     DPH,R1
   \   000034   F0           MOVX    @DPTR,A
     64                  pMacTasks[n].taskNumber = n;
   \   000035   EA           MOV     A,R2
   \   000036   A3           INC     DPTR
   \   000037   A3           INC     DPTR
   \   000038   A3           INC     DPTR
   \   000039   F0           MOVX    @DPTR,A
     65              }
   \   00003A   0A           INC     R2
   \   00003B   E8           MOV     A,R0
   \   00003C   240A         ADD     A,#0xa
   \   00003E   F8           MOV     R0,A
   \   00003F   E9           MOV     A,R1
   \   000040   3400         ADDC    A,#0x0
   \   000042   F9           MOV     R1,A
   \   000043   EA           MOV     A,R2
   \   000044   C3           CLR     C
   \   000045   9414         SUBB    A,#0x14
   \   000047   40E6         JC      ??mschInit_1
     66          
     67          } // mschInit
   \   000049                REQUIRE ?Subroutine0
   \   000049                ; // Fall through to label ?Subroutine0

   \                                 In segment NEAR_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   D083         POP     DPH
   \   000002   D082         POP     DPL
   \   000004   22           RET
     68          
     69          
     70          
     71          
     72          //-------------------------------------------------------------------------------------------------------
     73          //  UINT8 mschReserveTask(void)
     74          //
     75          //  DESCRIPTION:
     76          //      Reserves a task from the task pool (a task must be reserved before it can be used.
     77          //
     78          //  RETURN VALUE:
     79          //      UINT8
     80          //          The index of the reserved task (to be used with mschAddTask(...))
     81          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
     82          ROOT UINT8 mschReserveTask(void) {
   \                     mschReserveTask:
   \   000000   C082         PUSH    DPL
   \   000002   C083         PUSH    DPH
   \   000004                ; Saved register size: 2
   \   000004                ; Auto size: 0
     83              UINT8 n;
     84          
     85              // Find an unused task table entry and reserve it
     86              for (n = 0; n < MAC_TASK_COUNT; n++) {
   \   000004   7900         MOV     R1,#0x0
     87                  DISABLE_GLOBAL_INT();
   \                     ??mschReserveTask_0:
   \   000006   C2AF         CLR     0xa8.7
     88                  if (!pMacTasks[n].occupied) {
   \   000008   E9           MOV     A,R1
   \   000009   75F00A       MOV     B,#0xa
   \   00000C   A4           MUL     AB
   \   00000D   24..         ADD     A,#((pMacTasks + 6) & 0xff)
   \   00000F   F582         MOV     DPL,A
   \   000011   E5F0         MOV     A,B
   \   000013   34..         ADDC    A,#(((pMacTasks + 6) >> 8) & 0xff)
   \   000015   F583         MOV     DPH,A
   \   000017   E0           MOVX    A,@DPTR
   \   000018   7007         JNZ     ??mschReserveTask_1
     89                      pMacTasks[n].occupied = TRUE;
   \   00001A   7401         MOV     A,#0x1
   \   00001C   F0           MOVX    @DPTR,A
     90                      ENABLE_GLOBAL_INT();
   \   00001D   D2AF         SETB    0xa8.7
     91                      return n;
   \   00001F   800B         SJMP    ??mschReserveTask_2
     92                  }
     93                  ENABLE_GLOBAL_INT();
   \                     ??mschReserveTask_1:
   \   000021   D2AF         SETB    0xa8.7
     94              }
   \   000023   09           INC     R1
   \   000024   E9           MOV     A,R1
   \   000025   C3           CLR     C
   \   000026   9414         SUBB    A,#0x14

⌨️ 快捷键说明

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