os_core.lis

来自「将本站的UCOSFORAVR128V276版本升级到了280版」· LIS 代码 · 共 1,342 行 · 第 1/5 页

LIS
1,342
字号
 01D8                   .dbline 555
 01D8           ;         }
 01D8           ;         if (step == FALSE) {                               /* Return if waiting for step command           */
 01D8 4423              tst R20
 01DA 09F4              brne L44
 01DC                   .dbline 555
 01DC                   .dbline 556
 01DC           ;             return;
 01DC 52C0              xjmp L35
 01DE           L44:
 01DE                   .dbline 559
 01DE           ;         }
 01DE           ; #endif
 01DE           ;         ptcb = OSTCBList;                                  /* Point at first TCB in TCB list               */
 01DE 40919100          lds R20,_OSTCBList
 01E2 50919200          lds R21,_OSTCBList+1
 01E6 48C0              xjmp L47
 01E8           L46:
 01E8                   .dbline 560
 01E8           ;         while (ptcb->OSTCBPrio != OS_IDLE_PRIO) {          /* Go through all TCBs in TCB list              */
 01E8                   .dbline 561
 01E8           ;             OS_ENTER_CRITICAL();
 01E8 0E940000          xcall _OS_CPU_SR_Save
 01EC 602F              mov R22,R16
 01EE                   .dbline 562
 01EE           ;             if (ptcb->OSTCBDly != 0) {                     /* No, Delayed or waiting for event with TO     */
 01EE FA01              movw R30,R20
 01F0 2084              ldd R2,z+8
 01F2 3184              ldd R3,z+9
 01F4 2220              tst R2
 01F6 19F4              brne X3
 01F8 3320              tst R3
 01FA 09F4              brne X6
 01FC 37C0              xjmp L49
 01FE           X6:
 01FE           X3:
 01FE                   .dbline 562
 01FE                   .dbline 563
 01FE           ;                 if (--ptcb->OSTCBDly == 0) {               /* Decrement nbr of ticks to end of delay       */
 01FE CA01              movw R24,R20
 0200 0896              adiw R24,8
 0202 FC01              movw R30,R24
 0204 8081              ldd R24,z+0
 0206 9181              ldd R25,z+1
 0208 0197              sbiw R24,1
 020A 2C01              movw R4,R24
 020C 5182              std z+1,R5
 020E 4082              std z+0,R4
 0210 8030              cpi R24,0
 0212 8907              cpc R24,R25
 0214 09F0              breq X7
 0216 2AC0              xjmp L51
 0218           X7:
 0218           X4:
 0218                   .dbline 563
 0218                   .dbline 565
 0218           ;                                                            /* Check for timeout                            */
 0218           ;                     if ((ptcb->OSTCBStat & OS_STAT_PEND_ANY) != OS_STAT_RDY) {
 0218 FA01              movw R30,R20
 021A 8285              ldd R24,z+10
 021C 8773              andi R24,55
 021E 51F0              breq L53
 0220                   .dbline 565
 0220                   .dbline 566
 0220           ;                         ptcb->OSTCBStat   &= ~OS_STAT_PEND_ANY;                /* Yes, Clear status flag   */
 0220 CA01              movw R24,R20
 0222 0A96              adiw R24,10
 0224 FC01              movw R30,R24
 0226 8081              ldd R24,z+0
 0228 887C              andi R24,200
 022A 8083              std z+0,R24
 022C                   .dbline 567
 022C           ;                         ptcb->OSTCBPendTO  = TRUE;                             /* Indicate PEND timeout    */
 022C 81E0              ldi R24,1
 022E FA01              movw R30,R20
 0230 8387              std z+11,R24
 0232                   .dbline 568
 0232 03C0              xjmp L54
 0234           L53:
 0234                   .dbline 568
 0234           ;                     } else {
 0234                   .dbline 569
 0234           ;                         ptcb->OSTCBPendTO  = FALSE;
 0234 2224              clr R2
 0236 FA01              movw R30,R20
 0238 2386              std z+11,R2
 023A                   .dbline 570
 023A           ;                     }
 023A           L54:
 023A                   .dbline 572
 023A           ; 
 023A           ;                     if ((ptcb->OSTCBStat & OS_STAT_SUSPEND) == OS_STAT_RDY) {  /* Is task suspended?       */
 023A FA01              movw R30,R20
 023C 2284              ldd R2,z+10
 023E 3324              clr R3
 0240 23FC              sbrc R2,3
 0242 14C0              rjmp L55
 0244                   .dbline 572
 0244                   .dbline 573
 0244           ;                         OSRdyGrp               |= ptcb->OSTCBBitY;             /* No,  Make ready          */
 0244 FA01              movw R30,R20
 0246 2088              ldd R2,z+16
 0248 3090A101          lds R3,_OSRdyGrp
 024C 3228              or R3,R2
 024E 3092A101          sts _OSRdyGrp,R3
 0252                   .dbline 574
 0252           ;                         OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
 0252 80E0              ldi R24,<_OSRdyTbl
 0254 90E0              ldi R25,>_OSRdyTbl
 0256 FA01              movw R30,R20
 0258 2684              ldd R2,z+14
 025A 3324              clr R3
 025C 280E              add R2,R24
 025E 391E              adc R3,R25
 0260 FA01              movw R30,R20
 0262 4784              ldd R4,z+15
 0264 F101              movw R30,R2
 0266 5080              ldd R5,z+0
 0268 5428              or R5,R4
 026A 5082              std z+0,R5
 026C                   .dbline 575
 026C           ;                     }
 026C           L55:
 026C                   .dbline 576
 026C           ;                 }
 026C           L51:
 026C                   .dbline 577
 026C           ;             }
 026C           L49:
 026C                   .dbline 578
 026C FA01              movw R30,R20
 026E 4281              ldd R20,z+2
 0270 5381              ldd R21,z+3
 0272                   .dbline 579
 0272 062F              mov R16,R22
 0274 0E940000          xcall _OS_CPU_SR_Restore
 0278                   .dbline 580
 0278           L47:
 0278                   .dbline 560
 0278 FA01              movw R30,R20
 027A 8485              ldd R24,z+12
 027C 8830              cpi R24,8
 027E 09F0              breq X8
 0280 B3CF              xjmp L46
 0282           X8:
 0282                   .dbline 581
 0282           L36:
 0282                   .dbline -2
 0282           L35:
 0282 0E940000          xcall pop_gset2
 0286                   .dbline 0 ; func end
 0286 0895              ret
 0288                   .dbsym r step 20 c
 0288                   .dbsym r cpu_sr 22 c
 0288                   .dbsym r ptcb 20 pS[os_tcb]
 0288                   .dbend
 0288                   .dbfunc e OSVersion _OSVersion fi
                        .even
 0288           _OSVersion::
 0288                   .dbline -1
 0288                   .dbline 599
 0288           ;             ptcb = ptcb->OSTCBNext;                        /* Point at next TCB in TCB list                */
 0288           ;             OS_EXIT_CRITICAL();
 0288           ;         }
 0288           ;     }
 0288           ; }
 0288           ; /*$PAGE*/
 0288           ; /*
 0288           ; *********************************************************************************************************
 0288           ; *                                             GET VERSION
 0288           ; *
 0288           ; * Description: This function is used to return the version number of uC/OS-II.  The returned value
 0288           ; *              corresponds to uC/OS-II's version number multiplied by 100.  In other words, version 2.00
 0288           ; *              would be returned as 200.
 0288           ; *
 0288           ; * Arguments  : none
 0288           ; *
 0288           ; * Returns    : the version number of uC/OS-II multiplied by 100.
 0288           ; *********************************************************************************************************
 0288           ; */
 0288           ; 
 0288           ; INT16U  OSVersion (void)
 0288           ; {
 0288                   .dbline 600
 0288           ;     return (OS_VERSION);
 0288 08E1              ldi R16,280
 028A 11E0              ldi R17,1
 028C                   .dbline -2
 028C           L57:
 028C                   .dbline 0 ; func end
 028C 0895              ret
 028E                   .dbend
 028E                   .dbfunc e OS_Dummy _OS_Dummy fV
                        .even
 028E           _OS_Dummy::
 028E                   .dbline -1
 028E                   .dbline 618
 028E           ; }
 028E           ; 
 028E           ; /*$PAGE*/
 028E           ; /*
 028E           ; *********************************************************************************************************
 028E           ; *                                            DUMMY FUNCTION
 028E           ; *
 028E           ; * Description: This function doesn't do anything.  It is called by OSTaskDel().
 028E           ; *
 028E           ; * Arguments  : none
 028E           ; *
 028E           ; * Returns    : none
 028E           ; *********************************************************************************************************
 028E           ; */
 028E           ; 
 028E           ; #if OS_TASK_DEL_EN > 0
 028E           ; void  OS_Dummy (void)
 028E           ; {
 028E                   .dbline -2
 028E           L58:
 028E                   .dbline 0 ; func end
 028E 0895              ret
 0290                   .dbend
 0290                   .dbfunc e OS_EventTaskRdy _OS_EventTaskRdy fc
 0290           ;           bity -> R12
 0290           ;           bitx -> R22
 0290           ;           prio -> R20
 0290           ;              x -> R20
 0290           ;           ptcb -> R14,R15
 0290           ;              y -> R10
 0290           ;            msk -> y+10
 0290           ;            msg -> R20,R21
 0290           ;         pevent -> R14,R15
                        .even
 0290           _OS_EventTaskRdy::
 0290 0E940000          xcall push_gset5
 0294 A901              movw R20,R18
 0296 7801              movw R14,R16
 0298                   .dbline -1
 0298                   .dbline 646
 0298           ; }
 0298           ; #endif
 0298           ; 
 0298           ; /*$PAGE*/
 0298           ; /*
 0298           ; *********************************************************************************************************
 0298           ; *                             MAKE TASK READY TO RUN BASED ON EVENT OCCURING
 0298           ; *
 0298           ; * Description: This function is called by other uC/OS-II services and is used to ready a task that was
 0298           ; *              waiting for an event to occur.
 0298           ; *
 0298           ; * Arguments  : pevent    is a pointer to the event control block corresponding to the event.
 0298           ; *
 0298           ; *              msg       is a pointer to a message.  This pointer is used by message oriented services
 0298           ; *                        such as MAILBOXEs and QUEUEs.  The pointer is not used when called by other
 0298           ; *                        service functions.
 0298           ; *
 0298           ; *              msk       is a mask that is used to clear the status byte of the TCB.  For example,
 0298           ; *                        OSSemPost() will pass OS_STAT_SEM, OSMboxPost() will pass OS_STAT_MBOX etc.
 0298           ; *
 0298           ; * Returns    : none
 0298           ; *
 0298           ; * Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
 0298           ; *********************************************************************************************************
 0298           ; */
 0298           ; #if OS_EVENT_EN
 0298           ; INT8U  OS_EventTaskRdy (OS_EVENT *pevent, void *msg, INT8U msk)
 0298           ; {
 0298     

⌨️ 快捷键说明

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