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

📄 os_task.lis

📁 把UCOSII移植到AVR MEGA8上的程序 应用程序为驱动1602显示器,虽说有些简单,但可测试UCOS的运行
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00BA           ;             if ((OSRdyTbl[ptcb->OSTCBY] & ptcb->OSTCBBitX) != 0x00) {  /* If task is ready make it not */
 00BA 80E0              ldi R24,<_OSRdyTbl
 00BC 90E0              ldi R25,>_OSRdyTbl
 00BE F601              movw R30,R12
 00C0 E585              ldd R30,z+13
 00C2 FF27              clr R31
 00C4 E80F              add R30,R24
 00C6 F91F              adc R31,R25
 00C8 2080              ldd R2,z+0
 00CA F601              movw R30,R12
 00CC 3684              ldd R3,z+14
 00CE 2320              and R2,R3
 00D0 09F4              brne X4
 00D2 27C0              rjmp L10
 00D4           X4:
 00D4                   .dbline 83
 00D4                   .dbline 84
 00D4           ;                 if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0x00) {
 00D4 F601              movw R30,R12
 00D6 2584              ldd R2,z+13
 00D8 3324              clr R3
 00DA 280E              add R2,R24
 00DC 391E              adc R3,R25
 00DE F601              movw R30,R12
 00E0 4684              ldd R4,z+14
 00E2 4094              com R4
 00E4 F101              movw R30,R2
 00E6 5080              ldd R5,z+0
 00E8 5420              and R5,R4
 00EA 452C              mov R4,R5
 00EC 4082              std z+0,R4
 00EE 5520              tst R5
 00F0 41F4              brne L12
 00F2                   .dbline 84
 00F2                   .dbline 85
 00F2           ;                     OSRdyGrp &= ~ptcb->OSTCBBitY;
 00F2 F601              movw R30,R12
 00F4 2784              ldd R2,z+15
 00F6 2094              com R2
 00F8 30900000          lds R3,_OSRdyGrp
 00FC 3220              and R3,R2
 00FE 30920000          sts _OSRdyGrp,R3
 0102                   .dbline 86
 0102           ;                 }
 0102           L12:
 0102                   .dbline 87
 0102           ;                 OSRdyGrp    |= bity;                            /* Make new priority ready to run      */
 0102 20900000          lds R2,_OSRdyGrp
 0106 2E28              or R2,R14
 0108 20920000          sts _OSRdyGrp,R2
 010C                   .dbline 88
 010C           ;                 OSRdyTbl[y] |= bitx;
 010C 80E0              ldi R24,<_OSRdyTbl
 010E 90E0              ldi R25,>_OSRdyTbl
 0110 2980              ldd R2,y+1
 0112 3324              clr R3
 0114 280E              add R2,R24
 0116 391E              adc R3,R25
 0118 F101              movw R30,R2
 011A 4080              ldd R4,z+0
 011C 4A28              or R4,R10
 011E 4082              std z+0,R4
 0120                   .dbline 90
 0120 32C0              rjmp L11
 0122           L10:
 0122                   .dbline 90
 0122           ; #if OS_EVENT_EN > 0
 0122           ;             } else {
 0122                   .dbline 91
 0122           ;                 if ((pevent = ptcb->OSTCBEventPtr) != (OS_EVENT *)0) { /* Remove from event wait list  */
 0122 F601              movw R30,R12
 0124 2680              ldd R2,z+6
 0126 3780              ldd R3,z+7
 0128 A101              movw R20,R2
 012A 4030              cpi R20,0
 012C 4507              cpc R20,R21
 012E 09F4              brne X5
 0130 2AC0              rjmp L14
 0132           X5:
 0132           X2:
 0132                   .dbline 91
 0132                   .dbline 92
 0132           ;                     if ((pevent->OSEventTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0) {
 0132 CA01              movw R24,R20
 0134 0696              adiw R24,6
 0136 F601              movw R30,R12
 0138 2584              ldd R2,z+13
 013A 3324              clr R3
 013C 280E              add R2,R24
 013E 391E              adc R3,R25
 0140 F601              movw R30,R12
 0142 4684              ldd R4,z+14
 0144 4094              com R4
 0146 F101              movw R30,R2
 0148 5080              ldd R5,z+0
 014A 5420              and R5,R4
 014C 452C              mov R4,R5
 014E 4082              std z+0,R4
 0150 5520              tst R5
 0152 49F4              brne L16
 0154                   .dbline 92
 0154                   .dbline 93
 0154           ;                         pevent->OSEventGrp &= ~ptcb->OSTCBBitY;
 0154 CA01              movw R24,R20
 0156 0196              adiw R24,1
 0158 F601              movw R30,R12
 015A 4784              ldd R4,z+15
 015C 4094              com R4
 015E FC01              movw R30,R24
 0160 5080              ldd R5,z+0
 0162 5420              and R5,R4
 0164 5082              std z+0,R5
 0166                   .dbline 94
 0166           ;                     }
 0166           L16:
 0166                   .dbline 95
 0166           ;                     pevent->OSEventGrp    |= bity;              /* Add new priority to wait list       */
 0166 CA01              movw R24,R20
 0168 0196              adiw R24,1
 016A FC01              movw R30,R24
 016C 4080              ldd R4,z+0
 016E 4E28              or R4,R14
 0170 4082              std z+0,R4
 0172                   .dbline 96
 0172           ;                     pevent->OSEventTbl[y] |= bitx;
 0172 CA01              movw R24,R20
 0174 0696              adiw R24,6
 0176 2980              ldd R2,y+1
 0178 3324              clr R3
 017A 280E              add R2,R24
 017C 391E              adc R3,R25
 017E F101              movw R30,R2
 0180 4080              ldd R4,z+0
 0182 4A28              or R4,R10
 0184 4082              std z+0,R4
 0186                   .dbline 97
 0186           ;                 }
 0186           L14:
 0186                   .dbline 99
 0186           ; #endif
 0186           ;             }
 0186           L11:
 0186                   .dbline 100
 0186           ;             OSTCBPrioTbl[newprio] = ptcb;                       /* Place pointer to TCB @ new priority */
 0186 82E0              ldi R24,2
 0188 0C84              ldd R0,y+12
 018A 809D              mul R24,R0
 018C F001              movw R30,R0
 018E 80E0              ldi R24,<_OSTCBPrioTbl
 0190 90E0              ldi R25,>_OSTCBPrioTbl
 0192 E80F              add R30,R24
 0194 F91F              adc R31,R25
 0196 D182              std z+1,R13
 0198 C082              std z+0,R12
 019A                   .dbline 101
 019A           ;             ptcb->OSTCBPrio       = newprio;                    /* Set new task priority               */
 019A F601              movw R30,R12
 019C 0C84              ldd R0,y+12
 019E 0386              std z+11,R0
 01A0                   .dbline 102
 01A0           ;             ptcb->OSTCBY          = y;
 01A0 F601              movw R30,R12
 01A2 0980              ldd R0,y+1
 01A4 0586              std z+13,R0
 01A6                   .dbline 103
 01A6           ;             ptcb->OSTCBX          = x;
 01A6 F601              movw R30,R12
 01A8 6487              std z+12,R22
 01AA                   .dbline 104
 01AA           ;             ptcb->OSTCBBitY       = bity;
 01AA F601              movw R30,R12
 01AC E786              std z+15,R14
 01AE                   .dbline 105
 01AE           ;             ptcb->OSTCBBitX       = bitx;
 01AE F601              movw R30,R12
 01B0 A686              std z+14,R10
 01B2                   .dbline 106
 01B2           ;             OS_EXIT_CRITICAL();
 01B2 0881              ldd R16,y+0
 01B4 00D0              rcall _OS_CPU_SR_Restore
 01B6                   .dbline 107
 01B6           ;             OS_Sched();                                         /* Run highest priority task ready     */
 01B6 00D0              rcall _OS_Sched
 01B8                   .dbline 108
 01B8           ;             return (OS_NO_ERR);
 01B8 0027              clr R16
 01BA 0FC0              rjmp L3
 01BC           L8:
 01BC                   .dbline 109
 01BC           ;         } else {
 01BC                   .dbline 110
 01BC           ;             OSTCBPrioTbl[newprio] = (OS_TCB *)0;                /* Release the reserved prio.          */
 01BC 82E0              ldi R24,2
 01BE 0C84              ldd R0,y+12
 01C0 809D              mul R24,R0
 01C2 F001              movw R30,R0
 01C4 80E0              ldi R24,<_OSTCBPrioTbl
 01C6 90E0              ldi R25,>_OSTCBPrioTbl
 01C8 E80F              add R30,R24
 01CA F91F              adc R31,R25
 01CC 2224              clr R2
 01CE 3324              clr R3
 01D0 3182              std z+1,R3
 01D2 2082              std z+0,R2
 01D4                   .dbline 111
 01D4           ;             OS_EXIT_CRITICAL();
 01D4 0881              ldd R16,y+0
 01D6 00D0              rcall _OS_CPU_SR_Restore
 01D8                   .dbline 112
 01D8           ;             return (OS_PRIO_ERR);                               /* Task to change didn't exist         */
 01D8 09E2              ldi R16,41
 01DA                   .dbline -2
 01DA           L3:
 01DA 2296              adiw R28,2
 01DC 00D0              rcall pop_gset5
 01DE 2296              adiw R28,2
 01E0                   .dbline 0 ; func end
 01E0 0895              ret
 01E2                   .dbsym r pevent 20 pS[.1]
 01E2                   .dbsym r bity 14 c
 01E2                   .dbsym r bitx 10 c
 01E2                   .dbsym r x 22 c
 01E2                   .dbsym l y 1 c
 01E2                   .dbsym l cpu_sr 0 c
 01E2                   .dbsym r ptcb 12 pS[os_tcb]
 01E2                   .dbsym l newprio 12 c
 01E2                   .dbsym r oldprio 20 c
 01E2                   .dbend
 01E2                   .dbfunc e OSTaskCreate _OSTaskCreate fc
 01E2           ;            psp -> R12,R13
 01E2           ;            err -> R12
 01E2           ;         cpu_sr -> R10
 01E2           ;           prio -> R14
 01E2           ;           ptos -> y+24
 01E2           ;          pdata -> y+22
 01E2           ;           task -> R12,R13

⌨️ 快捷键说明

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