📄 os_cpu_c.lis
字号:
015C F601 movw R30,R12
015E 8083 std z+0,R24
0160 .dbline 225
0160 ; *psoft_stk-- = (INT8U)0x21; /* R21 = 0x21 */
0160 6A01 movw R12,R20
0162 4150 subi R20,1
0164 5040 sbci R21,0
0166 81E2 ldi R24,33
0168 F601 movw R30,R12
016A 8083 std z+0,R24
016C .dbline 226
016C ; *psoft_stk-- = (INT8U)0x22; /* R22 = 0x22 */
016C 6A01 movw R12,R20
016E 4150 subi R20,1
0170 5040 sbci R21,0
0172 82E2 ldi R24,34
0174 F601 movw R30,R12
0176 8083 std z+0,R24
0178 .dbline 227
0178 ; *psoft_stk-- = (INT8U)0x23; /* R23 = 0x23 */
0178 6A01 movw R12,R20
017A 4150 subi R20,1
017C 5040 sbci R21,0
017E 83E2 ldi R24,35
0180 F601 movw R30,R12
0182 8083 std z+0,R24
0184 .dbline 228
0184 ; *psoft_stk-- = (INT8U)0x24; /* R24 = 0x24 */
0184 6A01 movw R12,R20
0186 4150 subi R20,1
0188 5040 sbci R21,0
018A 84E2 ldi R24,36
018C F601 movw R30,R12
018E 8083 std z+0,R24
0190 .dbline 229
0190 ; *psoft_stk-- = (INT8U)0x25; /* R25 = 0x25 */
0190 6A01 movw R12,R20
0192 4150 subi R20,1
0194 5040 sbci R21,0
0196 85E2 ldi R24,37
0198 F601 movw R30,R12
019A 8083 std z+0,R24
019C .dbline 230
019C ; *psoft_stk-- = (INT8U)0x26; /* R26 = 0x26 */
019C 6A01 movw R12,R20
019E 4150 subi R20,1
01A0 5040 sbci R21,0
01A2 86E2 ldi R24,38
01A4 F601 movw R30,R12
01A6 8083 std z+0,R24
01A8 .dbline 231
01A8 ; *psoft_stk-- = (INT8U)0x27; /* R27 = 0x27 */
01A8 6A01 movw R12,R20
01AA 4150 subi R20,1
01AC 5040 sbci R21,0
01AE 87E2 ldi R24,39
01B0 F601 movw R30,R12
01B2 8083 std z+0,R24
01B4 .dbline 234
01B4 ; /* R28 R29:R28 is the software stack which gets ... */
01B4 ; /* R29 ... stored in the task's OS_TCB. */
01B4 ; *psoft_stk-- = (INT8U)0x30; /* R30 = 0x30 */
01B4 6A01 movw R12,R20
01B6 4150 subi R20,1
01B8 5040 sbci R21,0
01BA 80E3 ldi R24,48
01BC F601 movw R30,R12
01BE 8083 std z+0,R24
01C0 .dbline 235
01C0 ; *psoft_stk-- = (INT8U)0x31; /* R31 = 0x31 */
01C0 6A01 movw R12,R20
01C2 4150 subi R20,1
01C4 5040 sbci R21,0
01C6 81E3 ldi R24,49
01C8 F601 movw R30,R12
01CA 8083 std z+0,R24
01CC .dbline 237
01CC ;
01CC ; *psoft_stk-- = (INT8U)0x80; /* SREG = Interrupts enabled */
01CC 6A01 movw R12,R20
01CE 4150 subi R20,1
01D0 5040 sbci R21,0
01D2 80E8 ldi R24,128
01D4 F601 movw R30,R12
01D6 8083 std z+0,R24
01D8 .dbline 239
01D8 ;
01D8 ; tmp = (INT16U)phard_stk;
01D8 B501 movw R22,R10
01DA .dbline 240
01DA ; *psoft_stk-- = (INT8U)(tmp >> 8); /* SPH */
01DA 5A01 movw R10,R20
01DC 4150 subi R20,1
01DE 5040 sbci R21,0
01E0 1B01 movw R2,R22
01E2 232C mov R2,R3
01E4 3324 clr R3
01E6 F501 movw R30,R10
01E8 2082 std z+0,R2
01EA .dbline 241
01EA ; *psoft_stk = (INT8U) tmp; /* SPL */
01EA FA01 movw R30,R20
01EC 6083 std z+0,R22
01EE .dbline 242
01EE ; return ((OS_STK *)psoft_stk);
01EE 8F01 movw R16,R30
01F0 .dbline -2
01F0 L7:
01F0 .dbline 0 ; func end
01F0 0C940000 xjmp pop_xgsetF03C
01F4 .dbsym r phard_stk 10 pc
01F4 .dbsym r tmp 22 i
01F4 .dbsym r psoft_stk 20 pc
01F4 .dbsym l opt 10 i
01F4 .dbsym r ptos 10 pc
01F4 .dbsym r p_arg 18 pV
01F4 .dbsym r task 16 pfV
01F4 .dbend
01F4 .dbfunc e OSTaskSwHook _OSTaskSwHook fV
.even
01F4 _OSTaskSwHook::
01F4 .dbline -1
01F4 .dbline 264
01F4 ; }
01F4 ;
01F4 ;
01F4 ;
01F4 ; /*
01F4 ; *********************************************************************************************************
01F4 ; * TASK SWITCH HOOK
01F4 ; *
01F4 ; * Description: This function is called when a task switch is performed. This allows you to perform other
01F4 ; * operations during a context switch.
01F4 ; *
01F4 ; * Arguments : none
01F4 ; *
01F4 ; * Note(s) : 1) Interrupts are disabled during this call.
01F4 ; * 2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB of the task that
01F4 ; * will be 'switched in' (i.e. the highest priority task) and, 'OSTCBCur' points to the
01F4 ; * task being switched out (i.e. the preempted task).
01F4 ; *********************************************************************************************************
01F4 ; */
01F4 ; #if (OS_CPU_HOOKS_EN > 0) && (OS_TASK_SW_HOOK_EN > 0)
01F4 ; void OSTaskSwHook (void)
01F4 ; {
01F4 .dbline -2
01F4 L8:
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbend
01F6 .dbfunc e OSTCBInitHook _OSTCBInitHook fV
01F6 ; ptcb -> R0,R1
.even
01F6 _OSTCBInitHook::
01F6 .dbline -1
01F6 .dbline 283
01F6 ;
01F6 ; }
01F6 ; #endif
01F6 ;
01F6 ;
01F6 ; /*
01F6 ; *********************************************************************************************************
01F6 ; * OS_TCBInit() HOOK
01F6 ; *
01F6 ; * Description: This function is called by OS_TCBInit() after setting up most of the TCB.
01F6 ; *
01F6 ; * Arguments : ptcb is a pointer to the TCB of the task being created.
01F6 ; *
01F6 ; * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
01F6 ; *********************************************************************************************************
01F6 ; */
01F6 ; #if OS_CPU_HOOKS_EN > 0 && OS_VERSION > 203
01F6 ; void OSTCBInitHook (OS_TCB *ptcb)
01F6 ; {
01F6 .dbline 284
01F6 ; ptcb = ptcb; /* Prevent Compiler warning */
01F6 .dbline -2
01F6 L9:
01F6 .dbline 0 ; func end
01F6 0895 ret
01F8 .dbsym l ptcb 0 pS[os_tcb]
01F8 .dbend
01F8 .dbfunc e OSTimeTickHook _OSTimeTickHook fV
.even
01F8 _OSTimeTickHook::
01F8 .dbline -1
01F8 .dbline 301
01F8 ; }
01F8 ; #endif
01F8 ;
01F8 ; /*
01F8 ; *********************************************************************************************************
01F8 ; * TICK HOOK
01F8 ; *
01F8 ; * Description: This function is called every tick.
01F8 ; *
01F8 ; * Arguments : none
01F8 ; *
01F8 ; * Note(s) : 1) Interrupts may or may not be ENABLED during this call.
01F8 ; *********************************************************************************************************
01F8 ; */
01F8 ; #if (OS_CPU_HOOKS_EN > 0) && (OS_TIME_TICK_HOOK_EN > 0)
01F8 ; void OSTimeTickHook (void)
01F8 ; {
01F8 .dbline 310
01F8 ;
01F8 ; #if OS_VERSION >= 281 && OS_TMR_EN > 0
01F8 ; OSTmrCtr++;
01F8 ; if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
01F8 ; OSTmrCtr = 0;
01F8 ; OSTmrSignal();
01F8 ; }
01F8 ; #endif
01F8 ; WDR();
01F8 A895 wdr
01FA .dbline -2
01FA L10:
01FA .dbline 0 ; func end
01FA 0895 ret
01FC .dbend
01FC .dbfunc e OSTickISR_Handler _OSTickISR_Handler fV
.even
01FC _OSTickISR_Handler::
01FC .dbline -1
01FC .dbline 325
01FC ; }
01FC ; #endif
01FC ;
01FC ;
01FC ; /*
01FC ; *********************************************************************************************************
01FC ; * HANDLE THE TICK INTERRUPT
01FC ; *
01FC ; * Note(s): 1) No need to clear the interrupt source since we use output compare mode for Timer #0 and
01FC ; * the interrupt is automatically cleard in hardware when the ISR runs.
01FC ; *********************************************************************************************************
01FC ; */
01FC ;
01FC ; void OSTickISR_Handler (void)
01FC ; {
01FC .dbline 326
01FC ; OSTimeTick();
01FC .dbline -2
01FC L11:
01FC .dbline 0 ; func end
01FC 0C940000 xjmp _OSTimeTick
0200 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\MEGA16\source\CPU_source\os_cpu_c.c
0000 _OSTaskStkSizeHard::
0000 .blkb 2
0002 .dbfile C:\DOCUME~1\Administrator\桌面\MEGA16\source\CPU_source\os_cpu.h
0002 .dbsym e OSTaskStkSizeHard _OSTaskStkSizeHard i
0002 _OSTaskStkSize::
0002 .blkb 2
0004 .dbsym e OSTaskStkSize _OSTaskStkSize i
0004 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -