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

📄 os_cpu_c.c

📁 8052小型操作系统, 用Keil 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 + -