📄 queue.c
字号:
//===========================================================================//
//
//===========================================================================//
#include "Queue.h"
//===========================================================================//
//define for Queue
//===========================================================================//
#define FIFO_FULL 0xff //队列满
#define FIFO_OK 0x0f //队列不满不空
#define FIFO_EMPTY 0 //队列空
#define FIFO_TURE 1
#define FIFO_FALSE 0
#define UInt16 unsigned int
//===========================================================================//
//First In First Out(FIFO)(unsigned char *)
//Rest Queue
//===========================================================================//
void FIFO_Reset_Queue(FIFO_QUEUE *cqueue)
{
if (cqueue != ((FIFO_QUEUE *)0))
cqueue->InPtr = cqueue->OutPtr = cqueue->EndPtr;
}
//===========================================================================//
//First In First Out(FIFO)
//数据入队
//===========================================================================//
void FIFO_Push_Queue(FIFO_QUEUE *cqueue, unsigned int c)
{
++(cqueue->InPtr);
if (cqueue->InPtr > cqueue->EndPtr)
cqueue->InPtr = cqueue->StartPtr;
*(cqueue->InPtr) = c;
}
//===========================================================================//
//First In First Out(FIFO)//FIFO_PopQueue
//数据出队
//===========================================================================//
unsigned int FIFO_Pop_Queue(FIFO_QUEUE *cqueue)
{
(++cqueue->OutPtr);
if (cqueue->OutPtr > cqueue->EndPtr)
cqueue->OutPtr = cqueue->StartPtr;
return(*(cqueue->OutPtr));
}
//===========================================================================//
//First In First Out(FIFO)//FIFO_CheckQueue
//检查队列状态(满,空,不满不空)
//===========================================================================//
UInt16 FIFO_Check_Queue(FIFO_QUEUE *cqueue)
{
if((cqueue->OutPtr - cqueue->InPtr) == 1 ||
(cqueue->OutPtr == cqueue->StartPtr && cqueue->InPtr == cqueue->EndPtr))
return(FIFO_FULL); //检查队列为满返回0xff
else if(cqueue->OutPtr == cqueue->InPtr)
return(FIFO_EMPTY); //检查队列为空返回0x00
else
return(FIFO_OK); //检查队列为不空不满返回0x0f
}
//===========================================================================//
//队列为空否
//Return : 1(true) / 0(false)
//===========================================================================//
unsigned int QueueIsEmpty(FIFO_QUEUE *cqueue)
{
return((cqueue->InPtr == cqueue->OutPtr) ? 1 : 0);
}
//===========================================================================//
//队列为满否
//Return : 1(true) / 0(false)
//===========================================================================//
unsigned int QueueIsFull(FIFO_QUEUE *cqueue)
{
return(((cqueue->OutPtr - cqueue->InPtr) == 1 ||
(cqueue->OutPtr == cqueue->StartPtr &&
cqueue->InPtr == cqueue->EndPtr)) ? 1 : 0);
}
//===========================================================================//
//END
//===========================================================================//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -