os_cpu_c.c

来自「8052小型操作系统, 用Keil C编译器, 能进行任务切换, 信号量管理.」· C语言 代码 · 共 62 行

C
62
字号
/*
*********************************************************************************************************
*                                        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 + =
减小字号Ctrl + -
显示快捷键?