📄 os_core.lis
字号:
001A 60930200 sts _OSTime+2,R22
001E .dbline 91
001E ; #endif
001E ; OSIntNesting = 0; /* Clear the interrupt nesting counter */
001E 2224 clr R2
0020 20922401 sts _OSIntNesting,R2
0024 .dbline 92
0024 ; OSLockNesting = 0; /* Clear the scheduling lock counter */
0024 20922201 sts _OSLockNesting,R2
0028 .dbline 93
0028 ; OSTaskCtr = 0; /* Clear the number of tasks */
0028 20921A01 sts _OSTaskCtr,R2
002C .dbline 94
002C ; OSRunning = FALSE; /* Indicate that multitasking not started */
002C 20921B01 sts _OSRunning,R2
0030 .dbline 95
0030 ; OSIdleCtr = 0L; /* Clear the 32-bit idle counter */
0030 40E0 ldi R20,0
0032 50E0 ldi R21,0
0034 60E0 ldi R22,0
0036 70E0 ldi R23,0
0038 50931701 sts _OSIdleCtr+1,R21
003C 40931601 sts _OSIdleCtr,R20
0040 70931901 sts _OSIdleCtr+2+1,R23
0044 60931801 sts _OSIdleCtr+2,R22
0048 .dbline 101
0048 ; #if (OS_TASK_STAT_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
0048 ; OSIdleCtrRun = 0L;
0048 ; OSIdleCtrMax = 0L;
0048 ; OSStatRdy = FALSE; /* Statistic task is not ready */
0048 ; #endif
0048 ; OSCtxSwCtr = 0; /* Clear the context switch counter */
0048 40E0 ldi R20,0
004A 50E0 ldi R21,0
004C 60E0 ldi R22,0
004E 70E0 ldi R23,0
0050 50934C01 sts _OSCtxSwCtr+1,R21
0054 40934B01 sts _OSCtxSwCtr,R20
0058 70934E01 sts _OSCtxSwCtr+2+1,R23
005C 60934D01 sts _OSCtxSwCtr+2,R22
0060 .dbline 102
0060 ; OSRdyGrp = 0x00; /* Clear the ready list */
0060 20921F01 sts _OSRdyGrp,R2
0064 .dbline 103
0064 ; prdytbl = &OSRdyTbl[0];
0064 80E0 ldi R24,<_OSRdyTbl
0066 90E0 ldi R25,>_OSRdyTbl
0068 9E83 std y+6,R25
006A 8D83 std y+5,R24
006C .dbline 104
006C 4424 clr R4
006E 5524 clr R5
0070 09C0 rjmp L7
0072 L4:
0072 .dbline 104
0072 .dbline 105
0072 2224 clr R2
0074 ED81 ldd R30,y+5
0076 FE81 ldd R31,y+6
0078 2192 st Z+,R2
007A FE83 std y+6,R31
007C ED83 std y+5,R30
007E .dbline 106
007E L5:
007E .dbline 104
007E C201 movw R24,R4
0080 0196 adiw R24,1
0082 2C01 movw R4,R24
0084 L7:
0084 .dbline 104
0084 ; for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
0084 C201 movw R24,R4
0086 8330 cpi R24,3
0088 E0E0 ldi R30,0
008A 9E07 cpc R25,R30
008C 90F3 brlo L4
008E .dbline 108
008E ; *prdytbl++ = 0x00;
008E ; }
008E ;
008E ; OSPrioCur = 0;
008E 2224 clr R2
0090 20922101 sts _OSPrioCur,R2
0094 .dbline 109
0094 ; OSPrioHighRdy = 0;
0094 20922001 sts _OSPrioHighRdy,R2
0098 .dbline 110
0098 ; OSTCBHighRdy = (OS_TCB *)0; /* TCB Initialization */
0098 3324 clr R3
009A 30929100 sts _OSTCBHighRdy+1,R3
009E 20929000 sts _OSTCBHighRdy,R2
00A2 .dbline 111
00A2 ; OSTCBCur = (OS_TCB *)0;
00A2 30929500 sts _OSTCBCur+1,R3
00A6 20929400 sts _OSTCBCur,R2
00AA .dbline 112
00AA ; OSTCBList = (OS_TCB *)0;
00AA 30928F00 sts _OSTCBList+1,R3
00AE 20928E00 sts _OSTCBList,R2
00B2 .dbline 113
00B2 4424 clr R4
00B4 5524 clr R5
00B6 10C0 rjmp L11
00B8 L8:
00B8 .dbline 113
00B8 .dbline 114
00B8 02E0 ldi R16,2
00BA 10E0 ldi R17,0
00BC 9201 movw R18,R4
00BE 00D0 rcall empy16s
00C0 F801 movw R30,R16
00C2 80E0 ldi R24,<_OSTCBPrioTbl
00C4 90E0 ldi R25,>_OSTCBPrioTbl
00C6 E80F add R30,R24
00C8 F91F adc R31,R25
00CA 2224 clr R2
00CC 3324 clr R3
00CE 3182 std z+1,R3
00D0 2082 std z+0,R2
00D2 .dbline 115
00D2 L9:
00D2 .dbline 113
00D2 C201 movw R24,R4
00D4 0196 adiw R24,1
00D6 2C01 movw R4,R24
00D8 L11:
00D8 .dbline 113
00D8 ; for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) { /* Clear the priority table */
00D8 C201 movw R24,R4
00DA 8531 cpi R24,21
00DC E0E0 ldi R30,0
00DE 9E07 cpc R25,R30
00E0 58F3 brlo L8
00E2 .dbline 116
00E2 ; OSTCBPrioTbl[i] = (OS_TCB *)0;
00E2 ; }
00E2 ; ptcb1 = &OSTCBTbl[0];
00E2 80E0 ldi R24,<_OSTCBTbl
00E4 90E0 ldi R25,>_OSTCBTbl
00E6 7C01 movw R14,R24
00E8 .dbline 117
00E8 ; ptcb2 = &OSTCBTbl[1];
00E8 80E0 ldi R24,<_OSTCBTbl+16
00EA 90E0 ldi R25,>_OSTCBTbl+16
00EC 9C83 std y+4,R25
00EE 8B83 std y+3,R24
00F0 .dbline 118
00F0 4424 clr R4
00F2 5524 clr R5
00F4 0FC0 rjmp L16
00F6 L13:
00F6 .dbline 118
00F6 .dbline 119
00F6 F701 movw R30,R14
00F8 0B80 ldd R0,y+3
00FA 1C80 ldd R1,y+4
00FC 1382 std z+3,R1
00FE 0282 std z+2,R0
0100 .dbline 120
0100 C701 movw R24,R14
0102 4096 adiw R24,16
0104 7C01 movw R14,R24
0106 .dbline 121
0106 C001 movw R24,R0
0108 4096 adiw R24,16
010A 9C83 std y+4,R25
010C 8B83 std y+3,R24
010E .dbline 122
010E L14:
010E .dbline 118
010E C201 movw R24,R4
0110 0196 adiw R24,1
0112 2C01 movw R4,R24
0114 L16:
0114 .dbline 118
0114 ; for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) { /* Init. list of free TCBs */
0114 C201 movw R24,R4
0116 8530 cpi R24,5
0118 E0E0 ldi R30,0
011A 9E07 cpc R25,R30
011C 60F3 brlo L13
011E .dbline 123
011E ; ptcb1->OSTCBNext = ptcb2;
011E ; ptcb1++;
011E ; ptcb2++;
011E ; }
011E ; ptcb1->OSTCBNext = (OS_TCB *)0; /* Last OS_TCB */
011E 2224 clr R2
0120 3324 clr R3
0122 F701 movw R30,R14
0124 3382 std z+3,R3
0126 2282 std z+2,R2
0128 .dbline 124
0128 ; OSTCBFreeList = &OSTCBTbl[0];
0128 80E0 ldi R24,<_OSTCBTbl
012A 90E0 ldi R25,>_OSTCBTbl
012C 90939300 sts _OSTCBFreeList+1,R25
0130 80939200 sts _OSTCBFreeList,R24
0134 .dbline 132
0134 ;
0134 ; #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
0134 ; #if OS_MAX_EVENTS == 1
0134 ; OSEventFreeList = &OSEventTbl[0]; /* Only have ONE event control block */
0134 ; OSEventFreeList->OSEventType = OS_EVENT_TYPE_UNUSED;
0134 ; OSEventFreeList->OSEventPtr = (OS_EVENT *)0;
0134 ; #else
0134 ; pevent1 = &OSEventTbl[0];
0134 80E0 ldi R24,<_OSEventTbl
0136 90E0 ldi R25,>_OSEventTbl
0138 5C01 movw R10,R24
013A .dbline 133
013A ; pevent2 = &OSEventTbl[1];
013A 80E0 ldi R24,<_OSEventTbl+9
013C 90E0 ldi R25,>_OSEventTbl+9
013E 6C01 movw R12,R24
0140 .dbline 134
0140 4424 clr R4
0142 5524 clr R5
0144 0EC0 rjmp L21
0146 L18:
0146 .dbline 134
0146 .dbline 135
0146 2224 clr R2
0148 F501 movw R30,R10
014A 2082 std z+0,R2
014C .dbline 136
014C D582 std z+5,R13
014E C482 std z+4,R12
0150 .dbline 137
0150 C501 movw R24,R10
0152 0996 adiw R24,9
0154 5C01 movw R10,R24
0156 .dbline 138
0156 C601 movw R24,R12
0158 0996 adiw R24,9
015A 6C01 movw R12,R24
015C .dbline 139
015C L19:
015C .dbline 134
015C C201 movw R24,R4
015E 0196 adiw R24,1
0160 2C01 movw R4,R24
0162 L21:
0162 .dbline 134
0162 ; for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { /* Init. list of free EVENT control blocks */
0162 C201 movw R24,R4
0164 8330 cpi R24,3
0166 E0E0 ldi R30,0
0168 9E07 cpc R25,R30
016A 68F3 brlo L18
016C .dbline 140
016C ; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
016C ; pevent1->OSEventPtr = pevent2;
016C ; pevent1++;
016C ; pevent2++;
016C ; }
016C ; pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
016C 2224 clr R2
016E F501 movw R30,R10
0170 2082 std z+0,R2
0172 .dbline 141
0172 ; pevent1->OSEventPtr = (OS_EVENT *)0;
0172 3324 clr R3
0174 3582 std z+5,R3
0176 2482 std z+4,R2
0178 .dbline 142
0178 ; OSEventFreeList = &OSEventTbl[0];
0178 80E0 ldi R24,<_OSEventTbl
017A 90E0 ldi R25,>_OSEventTbl
017C 90934A01 sts _OSEventFreeList+1,R25
0180 80934901 sts _OSEventFreeList,R24
0184 .dbline 183
0184 ; #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -