| /********************************************************************************* **函数:void Uart08_Destory(void)
 **入参:null
 **返回:0
 **功能: 回收串口资源
 **时间:12/20/09
 **说明:null
 *********************************************************************************/
 void Uart08_Destory(void)
 {
 TR1   =0;
 TMOD &=0x0f;
 PCON &=~0x80;
 ES    =0;
 SCON  =0;
 }
 
 
 /*********************************************************************************
 **函数:Memory_Init(unsigned char  *pRamEnd)
 **入参:*pRamEnd
 **返回:null
 **功能: 初始化内存  内存指针指向RAM的最后
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 void Memory_Init(unsigned char  *pRamEnd)
 {
 pRamEnd=0;
 }
 /*********************************************************************************
 **函数:void Memory_Destory(void)
 **入参:null
 **返回:null
 **功能: 析构
 **时间:12/19/09
 **说明:IDLE STOP 进入此函数 释放硬件资源
 *********************************************************************************/
 void Memory_Destory(void)
 {
 ;
 }
 
 /*********************************************************************************
 **函数:unsigned char idata  *Memory_Malloc(unsigned char mSize)
 **入参:mSzie
 **返回:*pRamEnd 返回分配后的起始指针
 **功能: 内存分配
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 unsigned char idata  *Memory_Malloc(unsigned char mSize)
 {
 pRamEnd -= mSize;
 return   pRamEnd;
 }
 
 /*********************************************************************************
 **函数:void Memory_MemSet(unsigned char idata *pRam,\
 unsigned char mChar,unsigned char mLen)
 **入参:*pRam,mChar,mLen
 **返回:null
 **功能: 指定数据内存清除
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 void Memory_MemSet(unsigned char idata  *pRam,\
 unsigned char mChar,unsigned char mLen)
 {
 while(mLen--)
 {
 *pRam++ = mChar;
 }
 }
 /*********************************************************************************
 **函数:void Queue_Init(void)
 **入参:null
 **返回:null
 **功能: 初始化队列
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 void Queue_Init()
 {
 ;
 }
 
 /*********************************************************************************
 **函数:void Queue_Destory(void)
 **入参:null
 **返回:null
 **功能: 释放队列硬件资源
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 void Queue_Destory()
 {
 ;
 }
 /*********************************************************************************
 **函数:void Queue_Push(struct QueueBuffer  *pQueueBuffer,unsigned char mData)/
 
 **入参:QueueBuffer *pQueueBuffer  mData
 **返回:null
 **功能: 将数据压入队列
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 void Queue_Push(struct QueueBuffer  *pQueueBuffer,unsigned char mData)
 {
 
 bit fEaReg;
 /*注意:如果是重入函数内部不能使用Bool变量*/
 /*重入函数 KEIL默认 将所有变量定位到外部RAM的最高处,而外部RAM不可以位寻址*/
 *pQueueBuffer->pIn++ = mData;
 if(pQueueBuffer->pIn==pQueueBuffer->aBufferEnd)
 {
 pQueueBuffer->pIn=pQueueBuffer->aBufferStart;
 }
 fEaReg=EA;
 EA=0;
 pQueueBuffer->mCount++;
 EA=fEaReg;
 
 }
 
 /*********************************************************************************
 **函数:unsigned char Queue_Pop(struct QueueBuffer  *pQueueBuffer)
 **入参:QueueBuffer *pQueueBuffer
 **返回:mData
 **功能: 将数据弹出队列
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 unsigned char Queue_Pop(struct QueueBuffer  *pQueueBuffer)
 {
 unsigned char mData;
 bit fEaReg;
 
 mData=*pQueueBuffer->pOut ;
 if(++pQueueBuffer->pOut==pQueueBuffer->aBufferEnd)
 {
 pQueueBuffer->pOut=pQueueBuffer->aBufferStart;
 }
 fEaReg=EA;
 EA=0;
 pQueueBuffer->mCount--;
 EA=fEaReg;
 return mData;
 }
 
 /*********************************************************************************
 **函数:unsigned char Queue_Read(struct QueueBuffer  *pQueueBuffer,unsigned char mId)
 **入参:QueueBuffer  *pQueueBuffer  unsigned char mId
 **返回:null
 **功能: 读队列指定序号数据
 **时间:12/19/09
 **说明:null
 *********************************************************************************/
 unsigned char Queue_Read(struct QueueBuffer *pQueueBuffer,unsigned char mId)
 {
 unsigned char *pTemp;
 pTemp=pQueueBuffer->pOut+mId;
 if(pTemp<pQueueBuffer->aBufferEnd)
 {
 return (*pTemp);
 }
 else
 {
 return (*(pTemp-pQueueBuffer->aBufferEnd+pQueueBuffer->aBufferStart));
 }
 
 }
 |