📄 queue.c
字号:
/*********************************************************************************************************
** QUEUE队列头文件
** (c) Copyright 2006-2008, limaokui
** All Rights Reserved
**
** V1.0.0
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名:queue.h
**创 建 人: 李茂奎
**最后修改日期: 2006年8月29日
**描 述:
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 李茂奎
** 版 本: V1.00
** 日 期: 2006年8月29日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人: 李茂奎
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 李茂奎
** 日 期: 2006年8月29日
** 描 述:
**
**------------------------------------------------------------------------------------------------------
*********************************************************************************************************
**使用说明:在定义队列时请定义一个静态数组,并将此数组传递给队列的data,并将数据长度传递给queuesize
#define TWI_SEND_DATA_BUFFER_SIZE 100
static uint8 Twi_SendData[TWI_SEND_DATA_BUFFER_SIZE];
CirQueue Twi_SendBuffer={0,0,0,Twi_SendData,TWI_SEND_DATA_BUFFER_SIZE,QUEUE_OK};
*********************************************************************************************************/
#include "config.h"
/*********************************************************************************************************
** 函数名称:InitQueue
** 功能描述:初始化队列
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************/
void InitQueue(CirQueue * Q)
{
//CLI();
Q->front=Q->rear=0;
Q->count=0;
Q->errorcode= QUEUE_OK;
Q->memo=0;
Q->status=TWI_DATA_FREE;
//SEI();
}
/*********************************************************************************************************
** 函数名称:EmptyQueue(CirQueue *Q)
** 功能描述:判断队列是否为空
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************
uint8 EmptyQueue(CirQueue * Q)
{
return Q->count==0;
}
/*********************************************************************************************************
** 函数名称:FullQueue(CirQueue *Q)
** 功能描述:判断队列是否为满
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************
uint8 FullQueue(CirQueue * Q)
{
return (Q->count == Q->queuesize);
}
/*********************************************************************************************************
** 函数名称:EnQueue
** 功能描述:入队
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************/
void EnQueue(CirQueue * Q,uint8 x)
{
if(FullQueue(Q))
{
Q->errorcode=QUEUE_OVERFLOW;
Q->count=Q->queuesize;
return;
}
//CLI();
Q->count++;
Q->data[Q->rear]=x;
Q->rear=(Q->rear+1)%Q->queuesize;
Q->errorcode=QUEUE_OK;
//SEI();
}
/*********************************************************************************************************
** 函数名称:DeQueue
** 功能描述:出队
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************/
uint8 DeQueue(CirQueue * Q)
{
uint8 temp;
if(EmptyQueue(Q))
{
Q->errorcode=QUEUE_UNDERFLOW;
return FALSE;
}
//CLI();
Q->count--;
temp=Q->data[Q->front];
Q->front=(Q->front+1)%Q->queuesize;
Q->errorcode=QUEUE_OK;
//SEI();
return temp;
}
/*********************************************************************************************************
** 函数名称:FrontQueueData
** 功能描述:出队
** 输 入:
** 输 出:
** 全局变量:
** 调用模块:
** 说明:
** 注意:
** 日 期: 2006年8月29日
********************************************************************************************************/
uint8 FrontQueueData(CirQueue * Q)
{
if(EmptyQueue(Q))
{
Q->errorcode=QUEUE_UNDERFLOW;
return FALSE;
}
return Q->data[Q->front];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -