📄 os_core.lst
字号:
649:
650: #if OS_MBOX_EN || (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_SEM_EN
651: ptcb->OSTCBEventPtr = (OS_EVENT *)0; /* Task is not pending on an event */
652: #endif
653:
654: #if OS_MBOX_EN || (OS_Q_EN && (OS_MAX_QS >= 2))
655: ptcb->OSTCBMsg = (void *)0; /* No message received */
656: #endif
657:
658: OS_ENTER_CRITICAL();
0070 9b SEI
659: OSTCBPrioTbl[prio] = ptcb;
0071 9eee11 LDX 17,SP
0074 58 LSLX
0075 9ee603 LDA 3,SP
0078 87 PSHA
0079 8a PULH
007a 89 PSHX
007b 9eee05 LDX 5,SP
007e 8c CLRH
007f 9eef02 STX 2,SP
0082 88 PULX
0083 9ee702 STA 2,SP
0086 9ee601 LDA 1,SP
0089 e701 STA @OSTCBPrioTbl:1,X
008b 9ee603 LDA 3,SP
008e e700 STA @OSTCBPrioTbl,X
660: ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */
0090 9ee603 LDA 3,SP
0093 87 PSHA
0094 8a PULH
0095 b600 LDA OSTCBList
0097 9eee01 LDX 1,SP
009a e702 STA 2,X
009c b601 LDA OSTCBList:1
009e e703 STA 3,X
661: ptcb->OSTCBPrev = (OS_TCB *)0;
00a0 6f05 CLR 5,X
00a2 6f04 CLR 4,X
662: if (OSTCBList != (OS_TCB *)0) {
00a4 5500 LDHX OSTCBList
00a6 650000 CPHX #0
00a9 270a BEQ LB5 ;abs = 00b5
663: OSTCBList->OSTCBPrev = ptcb;
00ab 9ee601 LDA 1,SP
00ae e705 STA 5,X
00b0 9ee602 LDA 2,SP
00b3 e704 STA 4,X
00b5 LB5:
664: }
665: OSTCBList = ptcb;
00b5 95 TSX
00b6 e602 LDA 2,X
00b8 87 PSHA
00b9 ee03 LDX 3,X
00bb 8a PULH
00bc bf01 STX OSTCBList:1
00be b700 STA OSTCBList
666: OSRdyGrp |= ptcb->OSTCBBitY; /* Make task ready to run */
00c0 b600 LDA OSRdyGrp
00c2 ea0d ORA 13,X
00c4 b700 STA OSRdyGrp
667: OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
00c6 ee0b LDX 11,X
00c8 89 PSHX
00c9 be01 LDX OSTCBList:1
00cb e60c LDA 12,X
00cd 8c CLRH
00ce 88 PULX
00cf ea00 ORA @OSRdyTbl,X
00d1 e700 STA @OSRdyTbl,X
668: OS_EXIT_CRITICAL();
00d3 9a CLI
669: return (OS_NO_ERR);
00d4 4f CLRA
00d5 2003 BRA LDA ;abs = 00da
00d7 LD7:
670: } else {
671: OS_EXIT_CRITICAL();
00d7 9a CLI
672: return (OS_NO_MORE_TCB);
00d8 a646 LDA #70
00da LDA:
673: }
674: }
00da a704 AIS #4
00dc 81 RTS
675: /*$PAGE*/
676: /*
677: *********************************************************************************************************
678: * PROCESS SYSTEM TICK
679: *
680: * Description: This function is used to signal to uC/OS-II the occurrence of a 'system tick' (also known
681: * as a 'clock tick'). This function should be called by the ticker ISR but, can also be
682: * called by a high priority task.
683: *
684: * Arguments : none
685: *
686: * Returns : none
687: *********************************************************************************************************
688: */
689:
690: void OSTimeTick (void)
691: {
Function: OSTimeTick
Source : C:\motoctest\ucos1\sources\os_core.c
Options : -Cc -EnvGENPATH=C:\motoctest\ucos1;C:\motoctest\ucos1\bin;C:\motoctest\ucos1\cmd;C:\motoctest\ucos1\prm;C:\motoctest\ucos1\sources;C:\Metrowerks\lib\HC08c\LIB;C:\Metrowerks\lib\HC08c\src;C:\Metrowerks\lib\HC08c\INCLUDE -EnvLIBPATH=C:\Metrowerks\lib\HC08c\INCLUDE -EnvOBJPATH=C:\motoctest\ucos1\bin -EnvTEXTPATH=C:\motoctest\ucos1\bin -La=%f.inc -Lasm=%n.lst -ObjN=C:\motoctest\ucos1\ucos1_Data\MMDS-MMEVS\ObjectCode\os_core.c.o
0000 a7fc AIS #-4
692: OS_TCB *ptcb;
693:
694:
695: OSTimeTickHook(); /* Call user definable hook */
0002 cd0000 JSR OSTimeTickHook
696: ptcb = OSTCBList; /* Point at first TCB in TCB list */
0005 b601 LDA OSTCBList:1
0007 be00 LDX OSTCBList
0009 9ee704 STA 4,SP
000c 9eef03 STX 3,SP
697: while (ptcb->OSTCBPrio != OS_IDLE_PRIO) { /* Go through all TCBs in TCB list */
000f 206c BRA L7D ;abs = 007d
0011 L11:
698: OS_ENTER_CRITICAL();
0011 9b SEI
699: if (ptcb->OSTCBDly != 0) { /* Delayed or waiting for event with TO */
0012 9eee04 LDX 4,SP
0015 9ee603 LDA 3,SP
0018 87 PSHA
0019 8a PULH
001a e607 LDA 7,X
001c ea06 ORA 6,X
001e 274a BEQ L6A ;abs = 006a
700: if (--ptcb->OSTCBDly == 0) { /* Decrement nbr of ticks to end of delay */
0020 9f TXA
0021 ab06 ADD #6
0023 87 PSHA
0024 8b PSHH
0025 86 PULA
0026 a900 ADC #0
0028 87 PSHA
0029 8b PSHH
002a 86 PULA
002b 9ee703 STA 3,SP
002e 86 PULA
002f 87 PSHA
0030 9eef04 STX 4,SP
0033 8a PULH
0034 88 PULX
0035 6d01 TST 1,X
0037 2601 BNE L3A ;abs = 003a
0039 7a DEC ,X
003a L3A:
003a 6a01 DEC 1,X
003c 95 TSX
003d f6 LDA ,X
003e 87 PSHA
003f ee01 LDX 1,X
0041 8a PULH
0042 e607 LDA 7,X
0044 ea06 ORA 6,X
0046 2622 BNE L6A ;abs = 006a
701: if (!(ptcb->OSTCBStat & OS_STAT_SUSPEND)) { /* Is task suspended? */
0048 e608 LDA 8,X
004a a508 BIT #8
004c 2616 BNE L64 ;abs = 0064
702: OSRdyGrp |= ptcb->OSTCBBitY; /* No, Make task Rdy to Run (timed out)*/
004e b600 LDA OSRdyGrp
0050 ea0d ORA 13,X
0052 b700 STA OSRdyGrp
703: OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
0054 ee0b LDX 11,X
0056 89 PSHX
0057 9eee03 LDX 3,SP
005a e60c LDA 12,X
005c 8c CLRH
005d 88 PULX
005e ea00 ORA @OSRdyTbl,X
0060 e700 STA @OSRdyTbl,X
704: } else { /* Yes, Leave 1 tick to prevent ... */
0062 2006 BRA L6A ;abs = 006a
0064 L64:
705: ptcb->OSTCBDly = 1; /* ... loosing the task when the ... */
0064 a601 LDA #1
0066 e707 STA 7,X
0068 6f06 CLR 6,X
006a L6A:
706: } /* ... suspension is removed. */
707: }
708: }
709: ptcb = ptcb->OSTCBNext; /* Point at next TCB in TCB list */
006a 9eee04 LDX 4,SP
006d 9ee603 LDA 3,SP
0070 87 PSHA
0071 8a PULH
0072 e603 LDA 3,X
0074 9ee704 STA 4,SP
0077 e602 LDA 2,X
0079 9ee703 STA 3,SP
710: OS_EXIT_CRITICAL();
007c 9a CLI
007d L7D:
007d 95 TSX
007e e602 LDA 2,X
0080 87 PSHA
0081 ee03 LDX 3,X
0083 8a PULH
0084 e609 LDA 9,X
0086 a103 CMP #3
0088 2687 BNE L11 ;abs = 0011
711: }
712: OS_ENTER_CRITICAL(); /* Update the 32-bit tick counter */
008a 9b SEI
713: OSTime++;
008b 3c00 INC OSTime
714: OS_EXIT_CRITICAL();
008d 9a CLI
715: }
008e a704 AIS #4
0090 81 RTS
716: /*$PAGE*/
717: /*
718: *********************************************************************************************************
719: * GET VERSION
720: *
721: * Description: This function is used to return the version number of uC/OS-II. The returned value
722: * corresponds to uC/OS-II's version number multiplied by 100. In other words, version 2.00
723: * would be returned as 200.
724: *
725: * Arguments : none
726: *
727: * Returns : the version number of uC/OS-II multiplied by 100.
728: *********************************************************************************************************
729: */
730:
731: INT16U OSVersion (void)
732: {
Function: OSVersion
Source : C:\motoctest\ucos1\sources\os_core.c
Options : -Cc -EnvGENPATH=C:\motoctest\ucos1;C:\motoctest\ucos1\bin;C:\motoctest\ucos1\cmd;C:\motoctest\ucos1\prm;C:\motoctest\ucos1\sources;C:\Metrowerks\lib\HC08c\LIB;C:\Metrowerks\lib\HC08c\src;C:\Metrowerks\lib\HC08c\INCLUDE -EnvLIBPATH=C:\Metrowerks\lib\HC08c\INCLUDE -EnvOBJPATH=C:\motoctest\ucos1\bin -EnvTEXTPATH=C:\motoctest\ucos1\bin -La=%f.inc -Lasm=%n.lst -ObjN=C:\motoctest\ucos1\ucos1_Data\MMDS-MMEVS\ObjectCode\os_core.c.o
733: return (OS_VERSION);
0000 a6c8 LDA #-56
0002 5f CLRX
734: }
0003 81 RTS
735:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -