|
发表于 2012-8-7 19:58:30
|
显示全部楼层
请问一下,在程序里面的这个函数:
void UartSendchar(unsigned char ucdata)
{
ES=0; // 暂停串行中断,以免数据比较时出错
while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OutLEN-(putlast-outlast)==2)))
{
ES=1;
ucdata++;
ucdata--;
ES=0;
}
*putlast=ucdata; // 放字节进入缓冲区
putlast++; // 发送缓冲区指针加1
if (putlast==UartSendBuffer+OutLEN) putlast=UartSendBuffer; // 指针到了顶部换到底部
UartSendBufferHaveDataFlag=1;
if (UartSendBufferemptyFlag) // 缓冲区无数据
{
UartSendBufferemptyFlag =0;
SBUF=*outlast; // 未发送完继续发送
outlast++; // 最后传出去的字节位置加1
if (outlast==UartSendBuffer+OutLEN)outlast=UartSendBuffer; // 地址到顶部回到底部
if (putlast==outlast)UartSendBufferHaveDataFlag=0; // 数据发送完置发送缓冲区空标志
} // 缓冲区开始为空,置为有,启动发送
ES=1;
}
中的那段 while((((outlast-putlast)==2)&&(outlast > putlast ))||((outlast < putlast)&&(OutLEN-(putlast-outlast)==2)))
{
ES=1;
ucdata++;
ucdata--;
ES=0;
}
好像没有什么作用,请问能解释它有什么用吗? |
|