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

📄 os_core.lis

📁 把UCOSII移植到AVR MEGA8上的程序 应用程序为驱动1602显示器,虽说有些简单,但可测试UCOS的运行
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -