📄 os_time.lis
字号:
.module OS_TIME.C
.area text(rom, con, rel)
0000 .dbfile G:\IccPro\ucos_m8_icc\source\OS_TIME.C
0000 .dbfunc e OSTimeDly _OSTimeDly fV
0000 ; ticks -> R10,R11
.even
0000 _OSTimeDly::
0000 00D0 rcall push_gset3x
0002 5801 movw R10,R16
0004 .dbline -1
0004 .dbline 23
0004 ;
0004 ; #ifndef OS_MASTER_FILE
0004 ; #include "includes.h"
0004 ; #endif
0004 ;
0004 ; /*
0004 ; *********************************************************************************************************
0004 ; * DELAY TASK 'n' TICKS (n from 0 to 65535)
0004 ; *
0004 ; * Description: This function is called to delay execution of the currently running task until the
0004 ; * specified number of system ticks expires. This, of course, directly equates to delaying
0004 ; * the current task for some time to expire. No delay will result If the specified delay is
0004 ; * 0. If the specified delay is greater than 0 then, a context switch will result.
0004 ; *
0004 ; * Arguments : ticks is the time delay that the task will be suspended in number of clock 'ticks'.
0004 ; * Note that by specifying 0, the task will not be delayed.
0004 ; *
0004 ; * Returns : none
0004 ; *********************************************************************************************************
0004 ; */
0004 ;
0004 ; void OSTimeDly (INT16U ticks)
0004 ; {
0004 .dbline 24
0004 ; if (ticks > 0) { /* 0 means no delay! */
0004 AA20 tst R10
0006 19F4 brne X0
0008 BB20 tst R11
000A 09F4 brne X1
000C 32C0 rjmp L3
000E X1:
000E X0:
000E .dbline 24
000E .dbline 25
000E ; OS_ENTER_CRITICAL();
000E 0A93 st -y,r16
0010 0FB7 in r16,0x3F
0012 F894 cli
0014 0F93 push r16
0016 0991 ld r16,y+
0018 .dbline 25
0018 .dbline 26
0018 ; if ((OSRdyTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) { /* Delay current task */
0018 80E0 ldi R24,<_OSRdyTbl
001A 90E0 ldi R25,>_OSRdyTbl
001C E0910000 lds R30,_OSTCBCur
0020 F0910100 lds R31,_OSTCBCur+1
0024 2384 ldd R2,z+11
0026 3324 clr R3
0028 280E add R2,R24
002A 391E adc R3,R25
002C E0910000 lds R30,_OSTCBCur
0030 F0910100 lds R31,_OSTCBCur+1
0034 4484 ldd R4,z+12
0036 4094 com R4
0038 F101 movw R30,R2
003A 5080 ldd R5,z+0
003C 5420 and R5,R4
003E 452C mov R4,R5
0040 4082 std z+0,R4
0042 5520 tst R5
0044 59F4 brne L5
0046 .dbline 26
0046 .dbline 27
0046 ; OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
0046 E0910000 lds R30,_OSTCBCur
004A F0910100 lds R31,_OSTCBCur+1
004E 2584 ldd R2,z+13
0050 2094 com R2
0052 30900000 lds R3,_OSRdyGrp
0056 3220 and R3,R2
0058 30920000 sts _OSRdyGrp,R3
005C .dbline 28
005C ; }
005C L5:
005C .dbline 29
005C E0910000 lds R30,_OSTCBCur
0060 F0910100 lds R31,_OSTCBCur+1
0064 B782 std z+7,R11
0066 A682 std z+6,R10
0068 .dbline 30
0068 0A93 st -y,r16
006A 0F91 pop r16
006C 0FBF out 0x3F,r16
006E 0991 ld r16,y+
0070 .dbline 30
0070 .dbline 31
0070 00D0 rcall _OSSched
0072 .dbline 32
0072 L3:
0072 .dbline -2
0072 L2:
0072 00D0 rcall pop_gset3x
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbsym r ticks 10 i
0076 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -