📄 os_core.lis
字号:
00CE 282E mov R2,R24
00D0 392E mov R3,R25
00D2 E22D mov R30,R2
00D4 F32D mov R31,R3
00D6 8081 ldd R24,z+0
00D8 9181 ldd R25,z+1
00DA 0197 sbiw R24,1
00DC 482E mov R4,R24
00DE 592E mov R5,R25
00E0 4082 std z+0,R4
00E2 5182 std z+1,R5
00E4 4420 tst R4
00E6 31F4 brne L27
00E8 5520 tst R5
00EA 21F4 brne L27
00EC .dbline 61
00EC .dbline 61
00EC 8CEF ldi R24,252
00EE E62F mov R30,R22
00F0 F72F mov R31,R23
00F2 8283 std z+2,R24
00F4 .dbline 61
00F4 L27:
00F4 .dbline 62
; }
00F4 L25:
00F4 .dbline 63
00F4 L22:
00F4 .dbline 57
00F4 4395 inc R20
00F6 6B5F subi R22,251 ; offset = 5
00F8 7F4F sbci R23,255
00FA L24:
00FA .dbline 57
00FA 4530 cpi R20,5
00FC E8F2 brlo L21
00FE .dbline 64
; }
; OS_TASK_HighPri=OSPrioHighRdy();
00FE A8DF rcall _OSPrioHighRdy
0100 202E mov R2,R16
0102 312E mov R3,R17
0104 20924900 sts _OS_TASK_HighPri,R2
0108 .dbline -2
0108 .dbline 65
; }
0108 L20:
0108 00D0 rcall pop_gset2
010A .dbline 0 ; func end
010A 0895 ret
010C .dbsym r i 20 c
010C .dbsym r pOS_TCB 22 pX
010C .dbfunc s OSTimeDly _OSTimeDly fI
; Tdly -> R20,R21
.even
010C _OSTimeDly::
010C 00D0 rcall push_gset1
010E 402F mov R20,R16
0110 512F mov R21,R17
0112 .dbline -1
0112 .dbline 70
;
; #if OS_TIME_DLY_EN
; //OS Time Delay --- 使任务延时Tdly个时间节拍
; void OSTimeDly(INT16U Tdly) /* Delay Tdly clock tick */
; {
0112 .dbline 71
; OSTCB[OS_TASK_CrtPrio].OSTimeDly=Tdly+OS_TASK_TimeOut;
0112 20914A00 lds R18,_OS_TASK_CrtPrio
0116 3327 clr R19
0118 05E0 ldi R16,5
011A 10E0 ldi R17,0
011C 00D0 rcall mpy16s
011E E02F mov R30,R16
0120 F12F mov R31,R17
0122 80E0 ldi R24,<_OSTCB+3
0124 90E0 ldi R25,>_OSTCB+3
0126 E80F add R30,R24
0128 F91F adc R31,R25
012A 4083 std z+0,R20
012C 5183 std z+1,R21
012E .dbline 72
; OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_WaitTicks;
012E 20914A00 lds R18,_OS_TASK_CrtPrio
0132 3327 clr R19
0134 05E0 ldi R16,5
0136 10E0 ldi R17,0
0138 00D0 rcall mpy16s
013A E02F mov R30,R16
013C F12F mov R31,R17
013E 80E0 ldi R24,<_OSTCB+2
0140 90E0 ldi R25,>_OSTCB+2
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 8AEF ldi R24,250
0148 8083 std z+0,R24
014A .dbline 73
; OSSched();
014A 25D0 rcall _OSSched
014C .dbline -2
014C .dbline 74
; }
014C L29:
014C 00D0 rcall pop_gset1
014E .dbline 0 ; func end
014E 0895 ret
0150 .dbsym r Tdly 20 i
0150 .dbfunc s OSTaskSuspend _OSTaskSuspend fI
; TaskPrio -> R20
.even
0150 _OSTaskSuspend::
0150 00D0 rcall push_gset1
0152 402F mov R20,R16
0154 .dbline -1
0154 .dbline 80
; #endif
;
; #if OS_TASK_SUSPEND_EN>0
; //把正在运行的任务挂起(Suspend a task)。
; void OSTaskSuspend(INT8U TaskPrio)
; {
0154 .dbline 81
; OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Suspend;
0154 242F mov R18,R20
0156 3327 clr R19
0158 05E0 ldi R16,5
015A 10E0 ldi R17,0
015C 00D0 rcall mpy16s
015E E02F mov R30,R16
0160 F12F mov R31,R17
0162 80E0 ldi R24,<_OSTCB+2
0164 90E0 ldi R25,>_OSTCB+2
0166 E80F add R30,R24
0168 F91F adc R31,R25
016A 8DEF ldi R24,253
016C 8083 std z+0,R24
016E .dbline 82
; OSSched();
016E 13D0 rcall _OSSched
0170 .dbline -2
0170 .dbline 83
; }
0170 L32:
0170 00D0 rcall pop_gset1
0172 .dbline 0 ; func end
0172 0895 ret
0174 .dbsym r TaskPrio 20 c
0174 .dbfunc s OSTaskResume _OSTaskResume fI
; TaskPrio -> R20
.even
0174 _OSTaskResume::
0174 00D0 rcall push_gset1
0176 402F mov R20,R16
0178 .dbline -1
0178 .dbline 89
; #endif
;
; #if OS_TASK_Resume_EN>0
; // 恢复被挂起的任务(resume a task)。
; void OSTaskResume(INT8U TaskPrio)
; {
0178 .dbline 90
; OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Rdy;
0178 242F mov R18,R20
017A 3327 clr R19
017C 05E0 ldi R16,5
017E 10E0 ldi R17,0
0180 00D0 rcall mpy16s
0182 E02F mov R30,R16
0184 F12F mov R31,R17
0186 80E0 ldi R24,<_OSTCB+2
0188 90E0 ldi R25,>_OSTCB+2
018A E80F add R30,R24
018C F91F adc R31,R25
018E 8CEF ldi R24,252
0190 8083 std z+0,R24
0192 .dbline -2
0192 .dbline 91
; }
0192 L34:
0192 00D0 rcall pop_gset1
0194 .dbline 0 ; func end
0194 0895 ret
0196 .dbsym r TaskPrio 20 c
0196 .dbfunc s OSSched _OSSched fI
.even
0196 _OSSched::
0196 .dbline -1
0196 .dbline 96
; #endif
;
; //任务调度,把CPU控制权转到优先级最高的处于就绪态的任务。如果没有处于就绪态的任务,就地等待,
; void OSSched(void)
; {
0196 L37:
0196 .dbline 98
; do
; {
0196 .dbline 99
; OS_TASK_HighPri=OSPrioHighRdy();
0196 5CDF rcall _OSPrioHighRdy
0198 202E mov R2,R16
019A 312E mov R3,R17
019C 20924900 sts _OS_TASK_HighPri,R2
01A0 .dbline 100
01A0 L38:
01A0 .dbline 100
; } while (OS_TASK_HighPri==no_TASK_Rdy);
01A0 80914900 lds R24,_OS_TASK_HighPri
01A4 8F3F cpi R24,255
01A6 B9F3 breq L37
01A8 .dbline 101
; OSTCB[OS_TASK_HighPri].OSTaskStatus=OS_TASK_Run;
01A8 282F mov R18,R24
01AA 3327 clr R19
01AC 05E0 ldi R16,5
01AE 10E0 ldi R17,0
01B0 00D0 rcall mpy16s
01B2 E02F mov R30,R16
01B4 F12F mov R31,R17
01B6 80E0 ldi R24,<_OSTCB+2
01B8 90E0 ldi R25,>_OSTCB+2
01BA E80F add R30,R24
01BC F91F adc R31,R25
01BE 8BEF ldi R24,251
01C0 8083 std z+0,R24
01C2 .dbline 102
; OS_TASK_INT();
01C2 00D0 rcall _OSCtxSw
01C4 .dbline -2
01C4 .dbline 103
; }
01C4 L36:
01C4 .dbline 0 ; func end
01C4 0895 ret
.area bss(ram, con, rel)
0000 .dbfile C:\icc\minOS_iccavr\OS_Core.c
0000 _TASK_main_PrioStk::
0000 .blkb 48
0030 .dbfile C:\icc\minOS_iccavr/OS_Minos.h
0030 .dbsym s TASK_main_PrioStk _TASK_main_PrioStk A[48:48]c
0030 _OSTCB::
0030 .blkb 25
0049 .dbsym s OSTCB _OSTCB A[25:5]X
0049 _OS_TASK_HighPri::
0049 .blkb 1
004A .dbsym s OS_TASK_HighPri _OS_TASK_HighPri c
004A _OS_TASK_CrtPrio::
004A .blkb 1
004B .dbsym s OS_TASK_CrtPrio _OS_TASK_CrtPrio c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -