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

📄 os_mail.c

📁 MCS-51的一个小型操作系统,在KeilC中大模式下编译工作
💻 C
字号:
/********************************************
        嵌入式系统 小型操作系统
		 作者:汪普宏
	    制作日期:2006.9
*********************************************/

#include <os.h>
#include"OS_Mail.h"

void * xdata QBuf[QBOX_LENTH];
QUEUE xdata Queue;
void OSIint_Queue(void)
{
 Queue.w=QBuf;
 Queue.r=QBuf;
 Queue.lenth=0;
}
/****************************************
制作日期:2006.10
函数功能:从消息列队中获取消息
函数入口参数:无
调用者:任务
返回值:成功时返回读出的消息指针,错误返回NULL
*****************************************/

uchar xdata *OSQueue_Rece(void)		   //从队列缓冲环区中读出消息
{
 uchar xdata *buf; 
 buf=(uchar xdata*)Queue.r;
 if(Queue.lenth>0)
 { 
	 OS_CLOSEISR;
     if(Queue.r<&QBuf[QBOX_LENTH])	   //边界检查
	 {
		 Queue.r++;
	 }
     else 
     {
		 Queue.r=QBuf;
	 }
	 Queue.lenth--;
	 OS_OPENISR;
     return buf;
 }
 else 
 {
	 return NULL;
 }
}
/****************************************
制作日期:2006.10
函数功能:发送消息到消息列队
函数入口参数:发送的消息指针
调用者: 任务或中断
返回值:成功时返回OK,错误返回NULL
*****************************************/
uchar OSQueue_Send(uchar xdata *p)	//发送消息到队列中
{
 OS_CLOSEISR;
 if(Queue.lenth<QBOX_LENTH)
 {
	  Queue.w=(void*)p;
	  if(Queue.w<&QBuf[QBOX_LENTH])	  //边界检查
      {
		   Queue.w++;
	  }
	  else 
	  {
		   Queue.w=QBuf;		
	  } 
 }
 else 
 {
	  OS_OPENISR;
	  return NULL;
 }
 Queue.lenth++;
 OS_OPENISR; 
 return  OK;
}	  

⌨️ 快捷键说明

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