📄 os_cpu_c.c
字号:
/*
*********************************************************************************************************
* uC/OS-16
* The Real-Time Kernel
* MCS51
*
* File : OS_CPU_C.C
* By : zhang xian
* Date : 2006-11-26
*********************************************************************************************************
*/
#include "Includes.h"
/*********************************************************************************************************/
void OSStart( void )
{
#define OSi (*(unsigned char *)&OSISRStack[0])
#define OSk (*(unsigned char *)&OSISRStack[1])
#if EN_OS_TASK_STACK_CHK > 0
for(OSk=0; OSk<OS_STACK_SIZE; OSk++)
{
OSStack[OSk] = 0;
}
for(OSi=2; OSi<OS_ISR_STACK_SIZE; OSi++)
{
OSISRStack[OSi] = 0;
}
#endif
for(OSi=0; OSi<OS_MAX_SEMS; OSi++)
{
OSSemTask[OSi] = 0x00;
OSSemBuf[OSi] = 0x00;
}
for(OSk=0, OSi=0; OSi<OS_MAX_TASKS; OSi++)
{
OSDlyTicks[OSi] = 0x00;
#if EN_OS_TASK_STACK_CHK > 0
OSStackBottom[OSi] = (uint8)&OSStack[OSk+StackSize[OSi]-1];
#endif
OSStack[OSk] = (*((AxLongInt *)(&TaskFunction[OSi]))).AxChar[2]; // PCL
OSStack[OSk+1] = (*((AxLongInt *)(&TaskFunction[OSi]))).AxChar[1]; // PCH
OSStackPtr[OSi] = (OS_SP)&OSStack[OSk+14];
OSk += StackSize[OSi]; // A,B,DPH,DPL,PSW,R0,R1,R2,R3,R4,R5,R6,R7
}
OSTaskReady = (OS_SIZE)0xFF;
OSNextTaskID = 0;
OSIntCtxSw();
}
/*********************************************************************************************************/
#pragma disable
void OSTickISR(void) interrupt OS_SysIntVector
{
OSIntEnter();
OSReloadSysTimer();
OSTimeTick();
OS_Sched();
OSIntExit();
}
/*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -