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

📄 osal_timers.lst

📁 cc2430应用实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    195              if ( srchTimer->event_flag == event_flag &&
    196                   srchTimer->task_id == task_id )
    197                break;
    198          
    199              // Not this one, check another
    200              srchTimer = srchTimer->next;
   \                     ??osalFindTimer_1:
   \   00000A   8C82         MOV     DPL,R4
   \   00000C   8D83         MOV     DPH,R5
   \                     ??osalFindTimer_0:
   \   00000E   12....       LCALL   ??Subroutine0_0 & 0xFFFF
   \                     ??CrossCallReturnLabel_0:
   \   000011   EC           MOV     A,R4
   \   000012   7001         JNZ     ??osalFindTimer_2
   \   000014   ED           MOV     A,R5
   \                     ??osalFindTimer_2:
   \   000015   601F         JZ      ??osalFindTimer_3
   \   000017   8C82         MOV     DPL,R4
   \   000019   8D83         MOV     DPH,R5
   \   00001B   A3           INC     DPTR
   \   00001C   A3           INC     DPTR
   \   00001D   A3           INC     DPTR
   \   00001E   A3           INC     DPTR
   \   00001F   E0           MOVX    A,@DPTR
   \   000020   6A           XRL     A,R2
   \   000021   7003         JNZ     ??osalFindTimer_4
   \   000023   A3           INC     DPTR
   \   000024   E0           MOVX    A,@DPTR
   \   000025   6B           XRL     A,R3
   \                     ??osalFindTimer_4:
   \   000026   70E2         JNZ     ??osalFindTimer_1
   \   000028   8C82         MOV     DPL,R4
   \   00002A   8D83         MOV     DPH,R5
   \   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   69           XRL     A,R1
   \   000034   70D4         JNZ     ??osalFindTimer_1
    201            }
    202          
    203            return ( srchTimer );
   \                     ??osalFindTimer_3:
   \   000036   EC           MOV     A,R4
   \   000037   FA           MOV     R2,A
   \   000038   ED           MOV     A,R5
   \   000039   FB           MOV     R3,A
   \   00003A   80..         SJMP    ??Subroutine4_0
    204          }

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine4:
   \   000000   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \                     ??Subroutine4_0:
   \   000003   7F01         MOV     R7,#0x1
   \   000005   02....       LJMP    ?BANKED_LEAVE_XDATA

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine0:
   \   000000   8882         MOV     DPL,R0
   \   000002   8983         MOV     DPH,R1
   \                     ??Subroutine0_0:
   \   000004   E0           MOVX    A,@DPTR
   \   000005   FC           MOV     R4,A
   \   000006   A3           INC     DPTR
   \   000007   E0           MOVX    A,@DPTR
   \   000008   FD           MOV     R5,A
   \   000009   22           RET
    205          
    206          /*********************************************************************
    207           * @fn      osalDeleteTimer
    208           *
    209           * @brief   Delete a timer from a timer list.
    210           *          Ints must be disabled.
    211           *
    212           * @param   table
    213           * @param   rmTimer
    214           *
    215           * @return  none
    216           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    217          void osalDeleteTimer( osalTimerRec_t *rmTimer )
   \                     osalDeleteTimer:
    218          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    219            osalTimerRec_t *srchTimer;
    220          
    221            // Does the timer list really exist
    222            if ( (timerHead != NULL) && rmTimer )
   \   000005   90....       MOV     DPTR,#timerHead
   \   000008   E0           MOVX    A,@DPTR
   \   000009   7002         JNZ     ??osalDeleteTimer_0
   \   00000B   A3           INC     DPTR
   \   00000C   E0           MOVX    A,@DPTR
   \                     ??osalDeleteTimer_0:
   \   00000D   6061         JZ      ??osalDeleteTimer_1
   \   00000F   EA           MOV     A,R2
   \   000010   7001         JNZ     ??osalDeleteTimer_2
   \   000012   EB           MOV     A,R3
   \                     ??osalDeleteTimer_2:
   \   000013   605B         JZ      ??osalDeleteTimer_1
    223            {
    224              // Add it to the end of the timer list
    225              srchTimer = timerHead;
   \   000015   90....       MOV     DPTR,#timerHead
   \   000018   12....       LCALL   ?Subroutine2 & 0xFFFF
    226          
    227              // First element?
    228              if ( srchTimer == rmTimer )
   \                     ??CrossCallReturnLabel_7:
   \   00001B   EA           MOV     A,R2
   \   00001C   68           XRL     A,R0
   \   00001D   7002         JNZ     ??osalDeleteTimer_3
   \   00001F   EB           MOV     A,R3
   \   000020   69           XRL     A,R1
   \                     ??osalDeleteTimer_3:
   \   000021   7014         JNZ     ??CrossCallReturnLabel_8
    229              {
    230                timerHead = rmTimer->next;
   \   000023   8A82         MOV     DPL,R2
   \   000025   8B83         MOV     DPH,R3
   \   000027   12....       LCALL   ?Subroutine1 & 0xFFFF
   \                     ??CrossCallReturnLabel_4:
   \   00002A   E8           MOV     A,R0
   \   00002B   F0           MOVX    @DPTR,A
   \   00002C   A3           INC     DPTR
   \   00002D   E9           MOV     A,R1
   \   00002E   8037         SJMP    ??osalDeleteTimer_4
    231                osal_mem_free( rmTimer );
    232              }
    233              else
    234              {
    235                // Stop when found or at the end
    236                while ( srchTimer->next && srchTimer->next != rmTimer )
    237                  srchTimer = srchTimer->next;
   \                     ??osalDeleteTimer_5:
   \   000030   8882         MOV     DPL,R0
   \   000032   8983         MOV     DPH,R1
   \   000034   12....       LCALL   ?Subroutine2 & 0xFFFF
   \                     ??CrossCallReturnLabel_8:
   \   000037   8882         MOV     DPL,R0
   \   000039   8983         MOV     DPH,R1
   \   00003B   E0           MOVX    A,@DPTR
   \   00003C   7002         JNZ     ??osalDeleteTimer_6
   \   00003E   A3           INC     DPTR
   \   00003F   E0           MOVX    A,@DPTR
   \                     ??osalDeleteTimer_6:
   \   000040   600B         JZ      ??osalDeleteTimer_7
   \   000042   12....       LCALL   ?Subroutine0 & 0xFFFF
   \                     ??CrossCallReturnLabel_1:
   \   000045   EA           MOV     A,R2
   \   000046   6C           XRL     A,R4
   \   000047   7002         JNZ     ??osalDeleteTimer_8
   \   000049   EB           MOV     A,R3
   \   00004A   6D           XRL     A,R5
   \                     ??osalDeleteTimer_8:
   \   00004B   70E3         JNZ     ??osalDeleteTimer_5
    238          
    239                // Found?
    240                if ( srchTimer->next == rmTimer )
   \                     ??osalDeleteTimer_7:
   \   00004D   12....       LCALL   ?Subroutine0 & 0xFFFF
   \                     ??CrossCallReturnLabel_2:
   \   000050   EA           MOV     A,R2
   \   000051   6C           XRL     A,R4
   \   000052   7002         JNZ     ??osalDeleteTimer_9
   \   000054   EB           MOV     A,R3
   \   000055   6D           XRL     A,R5
   \                     ??osalDeleteTimer_9:
   \   000056   7018         JNZ     ??osalDeleteTimer_1
    241                {
    242                  // Fix pointers
    243                  srchTimer->next = rmTimer->next;
   \   000058   8A82         MOV     DPL,R2
   \   00005A   8B83         MOV     DPH,R3
   \   00005C   12....       LCALL   ??Subroutine0_0 & 0xFFFF
   \                     ??CrossCallReturnLabel_3:
   \   00005F   8882         MOV     DPL,R0
   \   000061   8983         MOV     DPH,R1
   \   000063   EC           MOV     A,R4
   \   000064   F0           MOVX    @DPTR,A
   \   000065   A3           INC     DPTR
   \   000066   ED           MOV     A,R5
   \                     ??osalDeleteTimer_4:
   \   000067   F0           MOVX    @DPTR,A
    244          
    245                  // Deallocate the timer struct memory
    246                  osal_mem_free( rmTimer );
   \   000068                ; Setup parameters for call to function osal_mem_free
   \   000068   90....       MOV     DPTR,#(osal_mem_free & 0xffff)
   \   00006B   74..         MOV     A,#((osal_mem_free >> 16) & 0xff)
   \   00006D   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
    247                }
    248              }
    249            }
    250          }
   \                     ??osalDeleteTimer_1:
   \   000070   80..         SJMP    ??Subroutine4_0

   \                                 In segment BANKED_CODE, align 1, keep-with-next
   \                     ?Subroutine1:
   \   000000   E0           MOVX    A,@DPTR
   \   000001   F8           MOV     R0,A
   \   000002   A3           INC     DPTR
   \   000003   E0           MOVX    A,@DPTR
   \   000004   F9           MOV     R1,A
   \   000005   90....       MOV     DPTR,#timerHead
   \   000008   22           RET
    251          
    252          /*********************************************************************
    253           * @fn      osal_start_timer
    254           *
    255           * @brief
    256           *
    257           *   This function is called to start a timer to expire in n mSecs.
    258           *   When the timer expires, the calling task will get the specified event.
    259           *
    260           * @param   UINT16 event_id - event to be notified with
    261           * @param   UNINT16 timeout_value - in milliseconds.
    262           *
    263           * @return  ZSUCCESS, NO_TIMER_AVAIL, INVALID_EVENT_ID or INVALID_TIMEOUT_VALUE
    264           */

   \                                 In segment BANKED_CODE, align 1, keep-with-next
    265          byte osal_start_timer( UINT16 event_id, UINT16 timeout_value )
   \                     osal_start_timer:
    266          {
   \   000000   74F7         MOV     A,#-0x9
   \   000002   12....       LCALL   ?BANKED_ENTER_XDATA
   \   000005                ; Saved register size: 9
   \   000005                ; Auto size: 0
    267            return osal_start_timerEx( osal_self(), event_id, timeout_value );
   \   000005                ; Setup parameters for call to function osal_start_timerEx
   \   000005   EA           MOV     A,R2
   \   000006   C0E0         PUSH    A
   \   000008   EB           MOV     A,R3
   \   000009   C0E0         PUSH    A
   \   00000B   EC           MOV     A,R4
   \   00000C   FE           MOV     R6,A
   \   00000D   ED           MOV     A,R5
   \   00000E   FF           MOV     R7,A
   \   00000F                ; Setup parameters for call to function osal_self
   \   00000F   90....       MOV     DPTR,#(osal_self & 0xffff)
   \   000012   74..         MOV     A,#((osal_self >> 16) & 0xff)
   \   000014   12....       LCALL   ?BCALL               ; Banked call to: DPTR()
   \   000017   EE           MOV     A,R6
   \   000018   FC           MOV     R4,A
   \   000019   EF           MOV     A,R7
   \   00001A   FD           MOV     R5,A
   \   00001B   D0E0         POP     A
   \   00001D   FB           MOV     R3,A
   \   00001E   D0E0         POP     A
   \   000020   FA           MOV     R2,A
   \   000021   90....       MOV     DPTR,#(osal_start_timerEx & 0xffff)
   \   000024   74..         MOV     A,#((osal_start_timerEx >> 16) & 0xff)

⌨️ 快捷键说明

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