📄 osal_timers.lst
字号:
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 + -