/*********************************************************************************
**函数: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));
}
}
|