-
else
{
UARTDataBuf[RCounter++]=U0DBUF;
if(RCounter==UARTDataBuf[1]+2) //第二个字节为总个数,7E,01,00
{
UartRNum = RCounter;
ReceiveOverFlag=1;
RCounter=0;
PreFlag=0;
}
和
else
{
RDataBuf[RCounter++]=U0DBUF;
if(RCounter==UART_RECEIVE_MAXNUM) //接收字节达到6个
{
PreFlag=0;
RCounter=0;
BYTE Sum=0x00;
for(i=0;i!=UART_RECEIVE_MAXNUM-1;i++)
Sum +=RDataBuf;
if(Sum == RDataBuf[UART_RECEIVE_MAXNUM - 1])
{
switch(RDataBuf[1])
{
case 0x01:
ReceiveOverFlag=TRUE;
break;
case 0x02:
break;
default:
break;
}//switch over
}
else //若接收不正确,则要求重新发送
{
//ReCallPC(); //重新发送请求
}
他们俩区别是什么呀?
-
都有吧~~~而且RCounter也没有找到它的初始值是多少?有些注释更是让人一头雾水~~~比如:
头文件中
//定义帧长度
#define UART_RECEIVE_MAXNUM 10
而串口程序中
if(RCounter==UART_RECEIVE_MAXNUM) //接收字节达到6个
6怎么来的呀?
-
l楼主,求帮忙啊~~~
//#pragma vector = URX0_VECTOR
__interrupt void URX0_ISR(void)
{
//接收数据
//BYTE i=0;
if(PreFlag == 0)
{
if(U0DBUF==0x7E) //如果接收到前导字符,则改变标志
{
PreFlag=1;
UARTDataBuf[RCounter++]=U0DBUF;
}
}
else
{
UARTDataBuf[RCounter++]=U0DBUF;
if(RCounter==UARTDataBuf[1]+2) //第二个字节为总个数,7E,01,00
{
UartRNum = RCounter;
ReceiveOverFlag=1;
RCounter=0;
PreFlag=0;
}
}
}
真心看不懂啊~~~~~