/* ****************************************************************************** * * @file user.c * @brief user module * @ic sy8837/8 * * @version 1.0 * @date 2024/11/01 09:59:40 * @author Alex Xu * * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. * All Rights Reserved * * History: * Revision Date Author Desc * 1.0.0 2024/11/01 Alex Xu build this file ****************************************************************************** */ /*_____ I N C L U D E S ____________________________________________________*/ #include "user.h" /******************************************************************************\ Macro definitions \******************************************************************************/ /******************************************************************************\ Variables definitions \******************************************************************************/ #if QUEUE idata SeqQueue Queue; #endif /******************************************************************************\ Functions definitions \******************************************************************************/ #if 0 /******************************************************************************* * Function Name : ExtSfr_Write * Description : ExtSfr Write a Byte * Input : Will Send Date * Output : None * Return : None ****************************************************************************** */ void ExtSfr_Write(u8 reg_addr,u8 _dat) { SFRADDR = reg_addr; SFRDATA = _dat; } /******************************************************************************* * Function Name : ExtSfr_Read * Description : ExtSfr Read a Byte * Input : Will Send Date * Output : None * Return : None ****************************************************************************** */ u8 ExtSfr_Read(u8 reg_addr) { u8 Data = 0; SFRADDR = reg_addr; Data = SFRDATA; return Data; } #endif #if QUEUE void InitQueue(SeqQueue *queue) { queue->qFront = 0; queue->qRear = 0; } bool IsEmptyQueue(SeqQueue *queue) { if( queue->qFront == queue->qRear ) //队首等于队尾 return true; else return false; } bool IsFullQueue(SeqQueue *queue) { if ( ( (queue->qRear + 1) % QUEUE_SIZE ) == queue->qFront) return true; else return false; } char PushQueue(SeqQueue *queue, int value) { if ( IsFullQueue(queue) ) return false; queue->BasicArr[queue->qRear] = value; //入队数据 queue->qRear = ( queue->qRear + 1 ) % QUEUE_SIZE; //队尾移向下个位置 return true; } char PopQueue(SeqQueue *queue) { int Pop_Data = 0; if( IsEmptyQueue(queue) ) //队首等于队尾,队列为空。 return Pop_Data; Pop_Data = queue->BasicArr[queue->qFront]; //出队列 queue->qFront = ( queue->qFront + 1 ) % QUEUE_SIZE; //指向下一个出队值 return Pop_Data; } int AddQueue(SeqQueue *queue) { char Cur = 0; int Value_Add = 0; if( IsEmptyQueue(queue) ) //队首等于队尾,队列为空。 return Value_Add; Cur = queue->qFront; while ( Cur != queue->qRear ) { Value_Add += queue->BasicArr[Cur]; Cur = ( Cur + 1 ) % QUEUE_SIZE; } return Value_Add; } #endif