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

📄 os_core.lis

📁 非剥夺型占先式minOS_iccavr avr单片机 icc编译环境
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -