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

📄 queue.c

📁 基于SPMC75F2413A的LCD驱动程式序, 使用128X64的液晶模块,包含有画线,画圆和BMP,字符串等显示处理,全部源码,完整的工程.愿对从事单片机开发的工程式师有用.
💻 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 + -