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

📄 ucos_ii.lis

📁 移植ucos2.76到mega128中软件仿真成功。 需要在iccavr7.13中编译
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0168           ;     
 0168           ;     
 0168           ;     if (OSRunning == TRUE) {                                   /* Make sure multitasking is running    */
 0168 80913D0A          lds R24,_OSRunning
 016C 8130              cpi R24,1
 016E 09F5              brne L24
 0170           X13:
 0170                   .dbline 410
 0170                   .dbline 411
 0170           ;         OS_ENTER_CRITICAL();
 0170 0E940000          xcall _OS_CPU_SR_Save
 0174 A02E              mov R10,R16
 0176                   .dbline 412
 0176           ;         if (OSLockNesting > 0) {                               /* Do not decrement if already 0        */
 0176 80E0              ldi R24,0
 0178 2090490A          lds R2,_OSLockNesting
 017C 8215              cp R24,R2
 017E B0F4              brsh L26
 0180           X14:
 0180                   .dbline 412
 0180                   .dbline 413
 0180           ;             OSLockNesting--;                                   /* Decrement lock nesting level         */
 0180 822D              mov R24,R2
 0182 8150              subi R24,1
 0184 8093490A          sts _OSLockNesting,R24
 0188                   .dbline 414
 0188           ;             if (OSLockNesting == 0) {                          /* See if scheduler is enabled and ...  */
 0188 8823              tst R24
 018A 61F4              brne L28
 018C           X15:
 018C                   .dbline 414
 018C                   .dbline 415
 018C           ;                 if (OSIntNesting == 0) {                       /* ... not in an ISR                    */
 018C 20904B0A          lds R2,_OSIntNesting
 0190 2220              tst R2
 0192 21F4              brne L30
 0194           X16:
 0194                   .dbline 415
 0194                   .dbline 416
 0194           ;                     OS_EXIT_CRITICAL();
 0194 0E940000          xcall _OS_CPU_SR_Restore
 0198                   .dbline 417
 0198           ;                     OS_Sched();                                /* See if a HPT is ready                */
 0198 88D2              xcall _OS_Sched
 019A                   .dbline 418
 019A           ;                 } else {
 019A 0BC0              xjmp L27
 019C           L30:
 019C                   .dbline 418
 019C                   .dbline 419
 019C           ;                     OS_EXIT_CRITICAL();
 019C 0A2D              mov R16,R10
 019E 0E940000          xcall _OS_CPU_SR_Restore
 01A2                   .dbline 420
 01A2           ;                 }
 01A2                   .dbline 421
 01A2           ;             } else {
 01A2 07C0              xjmp L27
 01A4           L28:
 01A4                   .dbline 421
 01A4                   .dbline 422
 01A4           ;                 OS_EXIT_CRITICAL();
 01A4 0A2D              mov R16,R10
 01A6 0E940000          xcall _OS_CPU_SR_Restore
 01AA                   .dbline 423
 01AA           ;             }
 01AA                   .dbline 424
 01AA           ;         } else {
 01AA 03C0              xjmp L27
 01AC           L26:
 01AC                   .dbline 424
 01AC                   .dbline 425
 01AC           ;             OS_EXIT_CRITICAL();
 01AC 0A2D              mov R16,R10
 01AE 0E940000          xcall _OS_CPU_SR_Restore
 01B2                   .dbline 426
 01B2           ;         }
 01B2           L27:
 01B2                   .dbline 427
 01B2           ;     }
 01B2           L24:
 01B2                   .dbline -2
 01B2           L23:
 01B2                   .dbline 0 ; func end
 01B2 A990              ld R10,y+
 01B4 0895              ret
 01B6                   .dbsym r cpu_sr 10 c
 01B6                   .dbend
 01B6                   .dbfunc e OSStart _OSStart fV
 01B6           ;              x -> R12
 01B6           ;              y -> R10
                        .even
 01B6           _OSStart::
 01B6 AA92              st -y,R10
 01B8 CA92              st -y,R12
 01BA                   .dbline -1
 01BA                   .dbline 453
 01BA           ; }
 01BA           ; #endif    
 01BA           ; 
 01BA           ; /*$PAGE*/
 01BA           ; /*
 01BA           ; *********************************************************************************************************
 01BA           ; *                                          START MULTITASKING
 01BA           ; *
 01BA           ; * Description: This function is used to start the multitasking process which lets uC/OS-II manages the
 01BA           ; *              task that you have created.  Before you can call OSStart(), you MUST have called OSInit()
 01BA           ; *              and you MUST have created at least one task.
 01BA           ; *
 01BA           ; * Arguments  : none
 01BA           ; *
 01BA           ; * Returns    : none
 01BA           ; *
 01BA           ; * Note       : OSStartHighRdy() MUST:
 01BA           ; *                 a) Call OSTaskSwHook() then,
 01BA           ; *                 b) Set OSRunning to TRUE.
 01BA           ; *                 c) Load the context of the task pointed to by OSTCBHighRdy.
 01BA           ; *                 d_ Execute the task.
 01BA           ; *********************************************************************************************************
 01BA           ; */
 01BA           ; 
 01BA           ; void  OSStart (void)
 01BA           ; {
 01BA                   .dbline 458
 01BA           ;     INT8U y;
 01BA           ;     INT8U x;
 01BA           ; 
 01BA           ; 
 01BA           ;     if (OSRunning == FALSE) {
 01BA 20903D0A          lds R2,_OSRunning
 01BE 2220              tst R2
 01C0 09F0              breq X18
 01C2 3AC0              xjmp L33
 01C4           X18:
 01C4           X17:
 01C4                   .dbline 458
 01C4                   .dbline 459
 01C4           ;         y             = OSUnMapTbl[OSRdyGrp];        /* Find highest priority's task priority number   */
 01C4 80E0              ldi R24,<_OSUnMapTbl
 01C6 90E0              ldi R25,>_OSUnMapTbl
 01C8 E091460A          lds R30,_OSRdyGrp
 01CC FF27              clr R31
 01CE E80F              add R30,R24
 01D0 F91F              adc R31,R25
 01D2 A690              elpm R10,Z
 01D4                   .dbline 460
 01D4           ;         x             = OSUnMapTbl[OSRdyTbl[y]];
 01D4 80E0              ldi R24,<_OSRdyTbl
 01D6 90E0              ldi R25,>_OSRdyTbl
 01D8 EA2D              mov R30,R10
 01DA FF27              clr R31
 01DC E80F              add R30,R24
 01DE F91F              adc R31,R25
 01E0 E081              ldd R30,z+0
 01E2 FF27              clr R31
 01E4 80E0              ldi R24,<_OSUnMapTbl
 01E6 90E0              ldi R25,>_OSUnMapTbl
 01E8 E80F              add R30,R24
 01EA F91F              adc R31,R25
 01EC C690              elpm R12,Z
 01EE                   .dbline 461
 01EE           ;         OSPrioHighRdy = (INT8U)((y << 3) + x);
 01EE 2C2C              mov R2,R12
 01F0 3324              clr R3
 01F2 4A2C              mov R4,R10
 01F4 5524              clr R5
 01F6 440C              lsl R4
 01F8 551C              rol R5
 01FA 440C              lsl R4
 01FC 551C              rol R5
 01FE 440C              lsl R4
 0200 551C              rol R5
 0202 420C              add R4,R2
 0204 531C              adc R5,R3
 0206 4092470A          sts _OSPrioHighRdy,R4
 020A                   .dbline 462
 020A           ;         OSPrioCur     = OSPrioHighRdy;
 020A 242C              mov R2,R4
 020C 2092480A          sts _OSPrioCur,R2
 0210                   .dbline 463
 0210           ;         OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run    */
 0210 80E0              ldi R24,<_OSTCBPrioTbl
 0212 90E0              ldi R25,>_OSTCBPrioTbl
 0214 E42D              mov R30,R4
 0216 FF27              clr R31
 0218 EE0F              lsl R30
 021A FF1F              rol R31
 021C E80F              add R30,R24
 021E F91F              adc R31,R25
 0220 2080              ldd R2,z+0
 0222 3180              ldd R3,z+1
 0224 30923309          sts _OSTCBHighRdy+1,R3
 0228 20923209          sts _OSTCBHighRdy,R2
 022C                   .dbline 464
 022C           ;         OSTCBCur      = OSTCBHighRdy;
 022C 30923709          sts _OSTCBCur+1,R3
 0230 20923609          sts _OSTCBCur,R2
 0234                   .dbline 465
 0234           ;         OSStartHighRdy();                            /* Execute target specific code to start task     */
 0234 0E940000          xcall _OSStartHighRdy
 0238                   .dbline 466
 0238           ;     }
 0238           L33:
 0238                   .dbline -2
 0238           L32:
 0238                   .dbline 0 ; func end
 0238 C990              ld R12,y+
 023A A990              ld R10,y+
 023C 0895              ret
 023E                   .dbsym r x 12 c
 023E                   .dbsym r y 10 c
 023E                   .dbend
 023E                   .dbfunc e OSTimeTick _OSTimeTick fV
 023E                   .dbstruct 0 14 os_event
 023E                   .dbfield 0 OSEventType c
 023E                   .dbfield 1 OSEventGrp c
 023E                   .dbfield 2 OSEventCnt i
 023E                   .dbfield 4 OSEventPtr pV
 023E                   .dbfield 6 OSEventTbl A[8:8]c
 023E                   .dbend
 023E                   .dbstruct 0 34 os_tcb
 023E                   .dbfield 0 OSTCBStkPtr pc
 023E                   .dbfield 2 OSTCBNext pS[os_tcb]
 023E                   .dbfield 4 OSTCBPrev pS[os_tcb]
 023E                   .dbfield 6 OSTCBEventPtr pS[os_event]
 023E                   .dbfield 8 OSTCBDly i
 023E                   .dbfield 10 OSTCBStat c
 023E                   .dbfield 11 OSTCBPrio c
 023E                   .dbfield 12 OSTCBX c
 023E                   .dbfield 13 OSTCBY c
 023E                   .dbfield 14 OSTCBBitX c
 023E                   .dbfield 15 OSTCBBitY c
 023E                   .dbfield 16 OSTCBCtxSwCtr l
 023E                   .dbfield 20 OSTCBCyclesTot l
 023E                   .dbfield 24 OSTCBCyclesStart l
 023E                   .dbfield 28 OSTCBStkBase pc
 023E                   .dbfield 30 OSTCBStkUsed l
 023E                   .dbend
 023E           ;           step -> R20
 023E           ;         cpu_sr -> R10
 023E           ;           ptcb -> R20,R21
                        .even
 023E           _OSTimeTick::
 023E 0E940000          xcall push_xgsetF03C
 0242                   .dbline -1
 0242                   .dbline 524
 0242           ; }
 0242           ; /*$PAGE*/
 0242           ; /*
 0242           ; *********************************************************************************************************
 0242           ; *                                        STATISTICS INITIALIZATION
 0242           ; *
 0242           ; * Description: This function is called by your application to establish CPU usage by first determining
 0242           ; *              how high a 32-bit counter would count to in 1 second if no other tasks were to execute
 0242           ; *              during that time.  CPU usage is then determined by a low priority task which keeps track
 0242           ; *              of this 32-bit counter every second but this time, with other tasks running.  CPU usage is
 0242           ; *              determined by:
 0242           ; *
 0242           ; *                                             OSIdleCtr
 0242           ; *                 CPU Usage (%) = 100 * (1 - ------------)
 0242           ; *                                            OSIdleCtrMax
 0242           ; *
 0242           ; * Arguments  : none
 0242           ; *
 0242           ; * Returns    : none
 0242           ; *********************************************************************************************************
 0242           ; */
 0242           ; 
 0242           ; #if OS_TASK_STAT_EN > 0
 0242           ; void  OSStatInit (void)
 0242           ; {

⌨️ 快捷键说明

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