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

📄 os_cpu_c.lis

📁 移植ucos2.76到mega128中软件仿真成功。 需要在iccavr7.13中编译
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0180 6A01              movw R12,R20
 0182 4150              subi R20,1
 0184 5040              sbci R21,0
 0186 85E2              ldi R24,37
 0188 F601              movw R30,R12
 018A 8083              std z+0,R24
 018C                   .dbline 211
 018C           ;     *psoft_stk-- = (INT8U)0x26;             /* R26   = 0x26                                             */
 018C 6A01              movw R12,R20
 018E 4150              subi R20,1
 0190 5040              sbci R21,0
 0192 86E2              ldi R24,38
 0194 F601              movw R30,R12
 0196 8083              std z+0,R24
 0198                   .dbline 212
 0198           ;     *psoft_stk-- = (INT8U)0x27;             /* R27   = 0x27                                             */
 0198 6A01              movw R12,R20
 019A 4150              subi R20,1
 019C 5040              sbci R21,0
 019E 87E2              ldi R24,39
 01A0 F601              movw R30,R12
 01A2 8083              std z+0,R24
 01A4                   .dbline 215
 01A4           ;                                             /* R28     R29:R28 is the software stack which gets ...     */
 01A4           ;                                             /* R29     ... stored in the task's OS_TCB.                 */
 01A4           ;     *psoft_stk-- = (INT8U)0x30;             /* R30   = 0x30                                             */
 01A4 6A01              movw R12,R20
 01A6 4150              subi R20,1
 01A8 5040              sbci R21,0
 01AA 80E3              ldi R24,48
 01AC F601              movw R30,R12
 01AE 8083              std z+0,R24
 01B0                   .dbline 216
 01B0           ;     *psoft_stk-- = (INT8U)0x31;             /* R31   = 0x31                                             */
 01B0 6A01              movw R12,R20
 01B2 4150              subi R20,1
 01B4 5040              sbci R21,0
 01B6 81E3              ldi R24,49
 01B8 F601              movw R30,R12
 01BA 8083              std z+0,R24
 01BC                   .dbline 217
 01BC           ;     *psoft_stk-- = (INT8U)0x00;             /* RAMPZ = 0x00                                             */
 01BC 6A01              movw R12,R20
 01BE 4150              subi R20,1
 01C0 5040              sbci R21,0
 01C2 2224              clr R2
 01C4 F601              movw R30,R12
 01C6 2082              std z+0,R2
 01C8                   .dbline 218
 01C8           ;     *psoft_stk-- = (INT8U)0x80;             /* SREG  = Interrupts enabled                               */
 01C8 6A01              movw R12,R20
 01CA 4150              subi R20,1
 01CC 5040              sbci R21,0
 01CE 80E8              ldi R24,128
 01D0 F601              movw R30,R12
 01D2 8083              std z+0,R24
 01D4                   .dbline 219
 01D4           ;     tmp          = (INT16U)phard_stk;
 01D4 5B01              movw R10,R22
 01D6                   .dbline 220
 01D6           ;     *psoft_stk-- = (INT8U)(tmp >> 8);       /* SPH                                                      */
 01D6 BA01              movw R22,R20
 01D8 4150              subi R20,1
 01DA 5040              sbci R21,0
 01DC 1501              movw R2,R10
 01DE 232C              mov R2,R3
 01E0 3324              clr R3
 01E2 FB01              movw R30,R22
 01E4 2082              std z+0,R2
 01E6                   .dbline 221
 01E6           ;     *psoft_stk   = (INT8U) tmp;             /* SPL                                                      */
 01E6 FA01              movw R30,R20
 01E8 A082              std z+0,R10
 01EA                   .dbline 222
 01EA           ;     return ((void *)psoft_stk);
 01EA 8F01              movw R16,R30
 01EC                   .dbline -2
 01EC           L7:
 01EC                   .dbline 0 ; func end
 01EC 0C940000          xjmp pop_xgsetF03C
 01F0                   .dbsym r phard_stk 22 pc
 01F0                   .dbsym r tmp 10 i
 01F0                   .dbsym r psoft_stk 20 pc
 01F0                   .dbsym l opt 10 i
 01F0                   .dbsym r ptos 10 pc
 01F0                   .dbsym r p_arg 18 pV
 01F0                   .dbsym r task 16 pfV
 01F0                   .dbend
 01F0                   .dbfunc e OSTaskSwHook _OSTaskSwHook fV
                        .even
 01F0           _OSTaskSwHook::
 01F0                   .dbline -1
 01F0                   .dbline 243
 01F0           ; }
 01F0           ; 
 01F0           ; /*$PAGE*/
 01F0           ; /*
 01F0           ; *********************************************************************************************************
 01F0           ; *                                           TASK SWITCH HOOK
 01F0           ; *
 01F0           ; * Description: This function is called when a task switch is performed.  This allows you to perform other
 01F0           ; *              operations during a context switch.
 01F0           ; *
 01F0           ; * Arguments  : none
 01F0           ; *
 01F0           ; * Note(s)    : 1) Interrupts are disabled during this call.
 01F0           ; *              2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
 01F0           ; *                 will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the 
 01F0           ; *                 task being switched out (i.e. the preempted task).
 01F0           ; *********************************************************************************************************
 01F0           ; */
 01F0           ; #if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
 01F0           ; void  OSTaskSwHook (void)
 01F0           ; {
 01F0                   .dbline -2
 01F0           L8:
 01F0                   .dbline 0 ; func end
 01F0 0895              ret
 01F2                   .dbend
 01F2                   .dbfunc e OSTCBInitHook _OSTCBInitHook fV
 01F2           ;           ptcb -> R0,R1
                        .even
 01F2           _OSTCBInitHook::
 01F2                   .dbline -1
 01F2                   .dbline 263
 01F2           ; #ifdef OS_VIEW_MODULE
 01F2           ;     OSView_TaskSwHook();
 01F2           ; #endif
 01F2           ; }
 01F2           ; #endif
 01F2           ; 
 01F2           ; /*
 01F2           ; *********************************************************************************************************
 01F2           ; *                                           OS_TCBInit() HOOK
 01F2           ; *
 01F2           ; * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
 01F2           ; *
 01F2           ; * Arguments  : ptcb    is a pointer to the TCB of the task being created.
 01F2           ; *
 01F2           ; * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
 01F2           ; *********************************************************************************************************
 01F2           ; */
 01F2           ; #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
 01F2           ; void  OSTCBInitHook (OS_TCB *ptcb)
 01F2           ; {
 01F2                   .dbline 264
 01F2           ;     ptcb = ptcb;                                           /* Prevent Compiler warning                 */
 01F2                   .dbline -2
 01F2           L9:
 01F2                   .dbline 0 ; func end
 01F2 0895              ret
 01F4                   .dbsym l ptcb 0 pS[os_tcb]
 01F4                   .dbend
 01F4                   .dbfunc e OSTimeTickHook _OSTimeTickHook fV
                        .even
 01F4           _OSTimeTickHook::
 01F4                   .dbline -1
 01F4                   .dbline 282
 01F4           ; }
 01F4           ; #endif
 01F4           ; 
 01F4           ; 
 01F4           ; /*
 01F4           ; *********************************************************************************************************
 01F4           ; *                                               TICK HOOK
 01F4           ; *
 01F4           ; * Description: This function is called every tick.
 01F4           ; *
 01F4           ; * Arguments  : none
 01F4           ; *
 01F4           ; * Note(s)    : 1) Interrupts may or may not be ENABLED during this call.
 01F4           ; *********************************************************************************************************
 01F4           ; */
 01F4           ; #if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
 01F4           ; void  OSTimeTickHook (void)
 01F4           ; {
 01F4                   .dbline -2
 01F4           L10:
 01F4                   .dbline 0 ; func end
 01F4 0895              ret
 01F6                   .dbend
 01F6                   .dbfunc e OSTickISR_Init _OSTickISR_Init fV
                        .even
 01F6           _OSTickISR_Init::
 01F6                   .dbline -1
 01F6                   .dbline 296
 01F6           ; #ifdef OS_VIEW_MODULE
 01F6           ;     OSView_TickHook();
 01F6           ; #endif
 01F6           ; }
 01F6           ; #endif
 01F6           ; 
 01F6           ; /*
 01F6           ; *********************************************************************************************************
 01F6           ; *                                        SETUP THE TICK RATE
 01F6           ; *********************************************************************************************************
 01F6           ; */
 01F6           ; 
 01F6           ; void  OSTickISR_Init (void)
 01F6           ; {
 01F6                   .dbline 297
 01F6           ;     TCCR0 = 0x07;                                       /* Set TIMER0 prescaler to CLK/1024            */
 01F6 87E0              ldi R24,7
 01F8 83BF              out 0x33,R24
 01FA                   .dbline 298
 01FA           ;     TIMSK |= 0x01;                                       /* Enable TIMER0 overflow interrupt            */
 01FA 87B7              in R24,0x37
 01FC 8160              ori R24,1
 01FE 87BF              out 0x37,R24
 0200                   .dbline -2
 0200           L11:
 0200                   .dbline 0 ; func end
 0200 0895              ret
 0202                   .dbend
 0202                   .dbfunc e OSTickISR_Handler _OSTickISR_Handler fV
                        .even
 0202           _OSTickISR_Handler::
 0202                   .dbline -1
 0202                   .dbline 321
 0202           ; }
 0202           ; 
 0202           ; /*
 0202           ; *********************************************************************************************************
 0202           ; *                                        中断向量入口
 0202           ; *********************************************************************************************************
 0202           ; */
 0202           ; /*
 0202           ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
 0202           ; void timer0_ovf_isr(void)
 0202           ; {
 0202           ;       OSTickISR();
 0202           ; }
 0202           ; */
 0202           ; 
 0202           ; /*
 0202           ; *********************************************************************************************************
 0202           ; *                                        SETUP THE TICK RATE
 0202           ; *********************************************************************************************************
 0202           ; */
 0202           ; 
 0202           ; void  OSTickISR_Handler (void)
 0202           ; {
 0202                   .dbline 322
 0202           ;     TCNT0 = 256 - (CPU_CLK_FREQ / OS_TICKS_PER_SEC / 1024);
 0202 80E7              ldi R24,112
 0204 82BF              out 0x32,R24
 0206                   .dbline 323
 0206           ;     OSTimeTick();
 0206 0E940000          xcall _OSTimeTick
 020A                   .dbline -2
 020A           L12:
 020A                   .dbline 0 ; func end
 020A 0895              ret
 020C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\MICRIUM\ICC\os_cpu_c.c
 0000           _OSTaskHardStkSize::
 0000                   .blkb 2
 0002                   .dbfile D:\MICRIUM\ICC\os_cpu.h
 0002                   .dbsym e OSTaskHardStkSize _OSTaskHardStkSize i
 0002           _OSTaskStkSize::
 0002                   .blkb 2
 0004                   .dbsym e OSTaskStkSize _OSTaskStkSize i
 0004           ; }

⌨️ 快捷键说明

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