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

📄 os_core.h

📁 基于51的圈圈操作系统(51_00_OS)出来拉…… 来这里下载整个程序包: http://blog.21ic.com/more.asp?name=computer00&id=9501
💻 H
字号:
/*******************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途

OS_core.h file

Created by Computer-lov
Date: 2005.10.27

Edit date:2006.2.24

Version V1.0
Copyright(C) Computer-lov 2005-2015
All rigths reserved

******************************************************/

#ifndef __OS_CORE_H__
#define __OS_CORE_H__

#define OS_Resource_Lack           0x0100
#define OS_Task_Not_Exist          0x0200
#define OS_Task_Cannot_Be_Killed   0x0300
#define OS_Successful              0x0000

//需要CPU统计,则定义此宏
#define CPU_STAT


//最大任务数
//修改MAX_TASK可改变最大任务数,注意:现在最多可支持8个任务
#define MAX_TASK 5

//堆栈深度
#define S_DEPTH 0x1B

//保存切换任务时软件压栈字节数
#define Num_PUSH_bytes 13

//程序控制块结构
typedef struct 
{
 unsigned char Task_SP;       //任务堆栈指针
 unsigned char Priority;      //优先级,值越小,优先级越高
 unsigned char Suspend;       //任务挂起标志
 unsigned char Delay;         //延迟时钟节拍数
 unsigned char data * MSG;         //消息指针
}PCB;


extern idata volatile PCB OS_pcb[MAX_TASK];
extern volatile unsigned char OS_Current_ID;
extern volatile unsigned char OS_Running;
extern volatile unsigned int OS_Run_Time;
extern volatile unsigned char OS_Task_List;
extern volatile unsigned char OS_En_Cr_Count;

void OS_Init(void);
unsigned int OS_Task_Create(unsigned char,unsigned int,unsigned char);
unsigned int OS_Task_Kill(unsigned char);
void OS_Delay(unsigned char);
void OS_Suspend(void);
unsigned char OS_Wait_Msg(unsigned char);
void OS_Start(void);


//发送消息
#define OS_Send_Msg(sender,receiver,msg) if(receiver!=0){*(OS_pcb[(receiver)].MSG)=(msg);OS_pcb[(receiver)].Suspend=0;OS_Task_Switch();}

#define OS_Enter_Critical()   EA=0;OS_En_Cr_Count++;                        /*进入临界段*/
#define OS_Exit_Critical()    if(OS_En_Cr_Count>=1){OS_En_Cr_Count--;if(OS_En_Cr_Count==0)EA=1;}  /*退出临界段*/
//上面两个必须配对使用,否则中断可能被关闭

#endif

⌨️ 快捷键说明

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