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

📄 mac_timer.lst

📁 zigbee location examples
💻 LST
📖 第 1 页 / 共 4 页
字号:
     99          //          TRUE: OK
    100          //          FALSE: Too many active callbacks (>MAC_CALLBACK_COUNT) or invalid timeout value
    101          //-------------------------------------------------------------------------------------------------------

   \                                 In segment NEAR_CODE, align 1, keep-with-next
    102          ROOT BOOL mtimSetCallback(VFPTR pFunc, INT32 timeout) {
   \                     mtimSetCallback:
   \   000000   74F1         MOV     A,#-0xf
   \   000002   12....       LCALL   ?FUNC_ENTER_XDATA
   \   000005                ; Saved register size: 15
   \   000005                ; Auto size: 5
   \   000005   74FB         MOV     A,#-0x5
   \   000007   12....       LCALL   ?ALLOC_XSTACK8
   \   00000A   7402         MOV     A,#0x2
   \   00000C   12....       LCALL   ?XSTACK_DISP0_8
   \   00000F   E9           MOV     A,R1
   \   000010   F0           MOVX    @DPTR,A
   \   000011   A3           INC     DPTR
   \   000012   EA           MOV     A,R2
   \   000013   F0           MOVX    @DPTR,A
   \   000014   A3           INC     DPTR
   \   000015   EB           MOV     A,R3
   \   000016   F0           MOVX    @DPTR,A
   \   000017   7414         MOV     A,#0x14
   \   000019   12....       LCALL   ?XSTACK_DISP0_8
   \   00001C   78..         MOV     R0,#?V0 + 4
   \   00001E   12....       LCALL   ?L_MOV_X
    103              UINT8 newCallback, prevCallback, n;
    104              MAC_CALLBACK_INFO __xdata *pNewCallback;
    105          
    106              // Special timeout values
    107              if (timeout < 0) {
   \   000021   90....       MOV     DPTR,#__Constant_0
   \   000024   78..         MOV     R0,#?V0 + 0
   \   000026   12....       LCALL   ?L_MOV_X
   \   000029   78..         MOV     R0,#?V0 + 0
   \   00002B   79..         MOV     R1,#?V0 + 4
   \   00002D   12....       LCALL   ?SL_GT
   \   000030   5005         JNC     ??mtimSetCallback_0
    108                  return FALSE;
   \                     ??mtimSetCallback_1:
   \   000032   7900         MOV     R1,#0x0
   \   000034   02....       LJMP    ??mtimSetCallback_2
    109              } else if (timeout == 0) {
   \                     ??mtimSetCallback_0:
   \   000037   90....       MOV     DPTR,#__Constant_0
   \   00003A   78..         MOV     R0,#?V0 + 4
   \   00003C   12....       LCALL   ?L_EQ_X
   \   00003F   7018         JNZ     ??mtimSetCallback_3
    110                  pFunc();
   \   000041                ; Setup parameters for indirect call
   \   000041   7402         MOV     A,#0x2
   \   000043   12....       LCALL   ?XSTACK_DISP0_8
   \   000046   E0           MOVX    A,@DPTR
   \   000047   F9           MOV     R1,A
   \   000048   A3           INC     DPTR
   \   000049   E0           MOVX    A,@DPTR
   \   00004A   FA           MOV     R2,A
   \   00004B   A3           INC     DPTR
   \   00004C   E0           MOVX    A,@DPTR
   \   00004D   8982         MOV     DPL,R1
   \   00004F   8A83         MOV     DPH,R2
   \   000051   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    111                  return TRUE;
   \   000054   7901         MOV     R1,#0x1
   \   000056   02....       LJMP    ??mtimSetCallback_2
    112              }
    113          
    114              DISABLE_GLOBAL_INT();
   \                     ??mtimSetCallback_3:
   \   000059   C2AF         CLR     0xa8.7
    115          
    116              // Locate an available entry in the callback table
    117              for (newCallback = 0; newCallback < MAC_CALLBACK_COUNT; newCallback++) {
   \   00005B   7B00         MOV     R3,#0x0
    118                  if (!pMtimCallbacks[newCallback].occupied) goto foundIndex;
   \                     ??mtimSetCallback_4:
   \   00005D   EB           MOV     A,R3
   \   00005E   75F009       MOV     B,#0x9
   \   000061   A4           MUL     AB
   \   000062   2400         ADD     A,#0x0
   \   000064   FE           MOV     R6,A
   \   000065   E5F0         MOV     A,B
   \   000067   34E0         ADDC    A,#-0x20
   \   000069   FF           MOV     R7,A
   \   00006A   8E82         MOV     DPL,R6
   \   00006C   8F83         MOV     DPH,R7
   \   00006E   A3           INC     DPTR
   \   00006F   A3           INC     DPTR
   \   000070   A3           INC     DPTR
   \   000071   A3           INC     DPTR
   \   000072   A3           INC     DPTR
   \   000073   E0           MOVX    A,@DPTR
   \   000074   7015         JNZ     ??mtimSetCallback_5
    119              }
    120          
    121              // None available :(
    122              ENABLE_GLOBAL_INT();
    123              return FALSE;
    124          
    125          foundIndex:
    126              pNewCallback = &pMtimCallbacks[newCallback];
    127          
    128              // No other active callbacks...
    129              if (firstCallback == NO_CALLBACK) {
   \   000076   74FF         MOV     A,#-0x1
   \   000078   65..         XRL     A,firstCallback
   \   00007A   701A         JNZ     ??mtimSetCallback_6
    130                  firstCallback = newCallback;
   \   00007C   8B..         MOV     firstCallback,R3
    131                  pNewCallback->nextCallback = NO_CALLBACK;
   \   00007E   74FF         MOV     A,#-0x1
   \   000080   8E82         MOV     DPL,R6
   \   000082   8F83         MOV     DPH,R7
   \   000084   A3           INC     DPTR
   \   000085   A3           INC     DPTR
   \   000086   A3           INC     DPTR
   \   000087   A3           INC     DPTR
   \   000088   02....       LJMP    ??mtimSetCallback_7
    132          
    133              // Locate insertion point...
    134              } else {
   \                     ??mtimSetCallback_5:
   \   00008B   0B           INC     R3
   \   00008C   EB           MOV     A,R3
   \   00008D   C3           CLR     C
   \   00008E   940C         SUBB    A,#0xc
   \   000090   40CB         JC      ??mtimSetCallback_4
   \   000092   D2AF         SETB    0xa8.7
   \   000094   809C         SJMP    ??mtimSetCallback_1
   \                     ??mtimSetCallback_6:
   \   000096   E5..         MOV     A,firstCallback
   \   000098   75F009       MOV     B,#0x9
   \   00009B   A4           MUL     AB
   \   00009C   F8           MOV     R0,A
   \   00009D   AAF0         MOV     R2,B
   \   00009F   EA           MOV     A,R2
   \   0000A0   F9           MOV     R1,A
   \   0000A1   E8           MOV     A,R0
   \   0000A2   2400         ADD     A,#0x0
   \   0000A4   E9           MOV     A,R1
   \   0000A5   34E0         ADDC    A,#-0x20
   \   0000A7   F9           MOV     R1,A
   \   0000A8   88..         MOV     ?V0 + 0,R0
   \   0000AA   8882         MOV     DPL,R0
   \   0000AC   F583         MOV     DPH,A
   \   0000AE   78..         MOV     R0,#?V0 + 4
   \   0000B0   12....       LCALL   ?UL_GT_X
   \   0000B3   E5..         MOV     A,firstCallback
   \   0000B5   4024         JC      ??mtimSetCallback_8
    135          
    136                  // First timeout?
    137                  if (timeout <= pMtimCallbacks[firstCallback].timeout) {
    138          
    139                      // Insert before!
    140                      pNewCallback->nextCallback = firstCallback;
   \   0000B7   8E82         MOV     DPL,R6
   \   0000B9   8F83         MOV     DPH,R7
   \   0000BB   A3           INC     DPTR
   \   0000BC   A3           INC     DPTR
   \   0000BD   A3           INC     DPTR
   \   0000BE   A3           INC     DPTR
   \   0000BF   F0           MOVX    @DPTR,A
    141                      pMtimCallbacks[firstCallback].timeout -= timeout;
   \   0000C0   75F009       MOV     B,#0x9
   \   0000C3   A4           MUL     AB
   \   0000C4   F8           MOV     R0,A
   \   0000C5   EA           MOV     A,R2
   \   0000C6   F9           MOV     R1,A
   \   0000C7   E8           MOV     A,R0
   \   0000C8   2400         ADD     A,#0x0
   \   0000CA   F582         MOV     DPL,A
   \   0000CC   E9           MOV     A,R1
   \   0000CD   34E0         ADDC    A,#-0x20
   \   0000CF   F583         MOV     DPH,A
   \   0000D1   78..         MOV     R0,#?V0 + 4
   \   0000D3   12....       LCALL   ?L_SUB_FROM_X
    142                      firstCallback = newCallback;
   \   0000D6   8B..         MOV     firstCallback,R3
   \   0000D8   02....       LJMP    ??mtimSetCallback_9
    143          
    144                  // Search through the linked list...
    145                  } else {
    146                      prevCallback = firstCallback;
   \                     ??mtimSetCallback_8:
   \   0000DB   FC           MOV     R4,A
    147                      n = pMtimCallbacks[prevCallback].nextCallback;
   \   0000DC   85..82       MOV     DPL,?V0 + 0
   \   0000DF   8983         MOV     DPH,R1
   \   0000E1   A3           INC     DPTR
   \   0000E2   A3           INC     DPTR
   \   0000E3   A3           INC     DPTR
   \   0000E4   A3           INC     DPTR
   \   0000E5   E0           MOVX    A,@DPTR
   \   0000E6   FA           MOV     R2,A
    148                      timeout -= pMtimCallbacks[prevCallback].timeout;
   \   0000E7   85..82       MOV     DPL,?V0 + 0
   \   0000EA   8983         MOV     DPH,R1
   \   0000EC   78..         MOV     R0,#?V0 + 4
   \   0000EE   12....       LCALL   ?L_SUB_X
   \   0000F1   801D         SJMP    ??mtimSetCallback_10
    149          
    150                      while ((timeout > pMtimCallbacks[n].timeout) && (n != NO_CALLBACK)) {
    151                          timeout -= pMtimCallbacks[n].timeout;
   \                     ??mtimSetCallback_11:
   \   0000F3   78..         MOV     R0,#?V0 + 4
   \   0000F5   79..         MOV     R1,#?V0 + 0
   \   0000F7   12....       LCALL   ?L_SUB
    152                          prevCallback = n;
   \   0000FA   EA           MOV     A,R2
   \   0000FB   FC           MOV     R4,A
    153                          n = pMtimCallbacks[prevCallback].nextCallback;
   \   0000FC   85..82       MOV     DPL,?XSP + 0
   \   0000FF   85..83       MOV     DPH,?XSP + 1
   \   000102   E0           MOVX    A,@DPTR
   \   000103   F8           MOV     R0,A
   \   000104   A3           INC     DPTR
   \   000105   E0           MOVX    A,@DPTR
   \   000106   F583         MOV     DPH,A
   \   000108   8882         MOV     DPL,R0
   \   00010A   A3           INC     DPTR
   \   00010B   A3           INC     DPTR
   \   00010C   A3           INC     DPTR
   \   00010D   A3           INC     DPTR
   \   00010E   E0           MOVX    A,@DPTR
   \   00010F   FA           MOV     R2,A
    154                      }
   \                     ??mtimSetCallback_10:
   \   000110   EA           MOV     A,R2
   \   000111   75F009       MOV     B,#0x9
   \   000114   A4           MUL     AB
   \   000115   F8           MOV     R0,A
   \   000116   2400         ADD     A,#0x0
   \   000118   E5F0         MOV     A,B
   \   00011A   34E0         ADDC    A,#-0x20
   \   00011C   F9           MOV     R1,A
   \   00011D   85..82       MOV     DPL,?XSP + 0
   \   000120   85..83       MOV     DPH,?XSP + 1
   \   000123   E8           MOV     A,R0
   \   000124   F0           MOVX    @DPTR,A
   \   000125   A3           INC     DPTR
   \   000126   E9           MOV     A,R1
   \   000127   F0           MOVX    @DPTR,A
   \   000128   F583         MOV     DPH,A
   \   00012A   8882         MOV     DPL,R0
   \   00012C   78..         MOV     R0,#?V0 + 0
   \   00012E   12....       LCALL   ?L_MOV_X
   \   000131   78..         MOV     R0,#?V0 + 4
   \   000133   79..         MOV     R1,#?V0 + 0
   \   000135   12....       LCALL   ?UL_GT
   \   000138   5005         JNC     ??mtimSetCallback_12
   \   00013A   74FF         MOV     A,#-0x1
   \   00013C   6A           XRL     A,R2
   \   00013D   70B4         JNZ     ??mtimSetCallback_11
    155          
    156                      if (n != NO_CALLBACK) {
   \                     ??mtimSetCallback_12:
   \   00013F   74FF         MOV     A,#-0x1
   \   000141   6A           XRL     A,R2
   \   000142   6013         JZ      ??mtimSetCallback_13
    157                          pMtimCallbacks[n].timeout -= timeout;
   \   000144   85..82       MOV     DPL,?XSP + 0
   \   000147   85..83       MOV     DPH,?XSP + 1
   \   00014A   E0           MOVX    A,@DPTR
   \   00014B   F8           MOV     R0,A
   \   00014C   A3           INC     DPTR
   \   00014D   E0           MOVX    A,@DPTR
   \   00014E   F583         MOV     DPH,A
   \   000150   8882         MOV     DPL,R0
   \   000152   78..         MOV     R0,#?V0 + 4
   \   000154   12....       LCALL   ?L_SUB_FROM_X
    158                      }
    159                      pNewCallback->nextCallback = n;
   \                     ??mtimSetCallback_13:
   \   000157   EA           MOV     A,R2
   \   000158   8E82         MOV     DPL,R6

⌨️ 快捷键说明

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