本帖最后由 hbdxzn 于 2013-1-10 14:53 编辑
写的一个扩展串口的程序,发多字节,点三次发送才收到一次,请问这是什么原因吖?
void send(unsigned char *buf,unsigned char n)
{
unsigned char i;
ES=0;
for(i=0;i<n;i++)
{
SBUF=buf
;
while(ti==0);
TI=0;
}
ES=1;
TXflag=1;
}
void GM8123_Read(uint8 *buff) //读数据
{
//memset(buff,0,sizeof(buff));
if(RXflag==0x01) //子通道1
{
RXflag=0;
while(ReadMark!=ReceiveLength1)//若缓存数据有变化,则进入
{
buff[DatLength]=table_receive1[ReadMark];
buff[DatLength+1]='
';
DatLength++;
ReadMark=++ReadMark&0x1f;
EndFlag=100;
ReadFlag=BEGIN;
}
if(ReadFlag==BEGIN)
{
if(EndFlag==0)
{
DatLength=0;
ReadFlag=STOP;//yizu数据读取结束
}
else
{
EndFlag--;
}
}
}
else if(RXflag==0x02) //子通道2
{
RXflag=0;
while(ReadMark!=ReceiveLength2)//若缓存数据有变化,则进入
{
buff[DatLength]=table_receive2[ReadMark];
buff[DatLength+1]='
';
DatLength++;
ReadMark=++ReadMark&0x1f;
EndFlag=100;
ReadFlag=BEGIN;
}
if(ReadFlag==BEGIN)
{
if(EndFlag==0)
{
DatLength=0;
ReadFlag=STOP;//yizu数据读取结束
}
else
{
EndFlag--;
}
}
}
else if(RXflag==0x03)
//子通道3类似,在此就不在写出
}
void main()
{
GM8123_Init();
while(1)
{
ES=0;
GM8123_Read(UpData);
if(UpData[0]==0x56&&UpData[1]==0x00&&UpData[2]==0x34&&UpData[3]==0x01&&UpData[4]==0x00)
GM8123_Write(0x02,UpData);
ES=1;
}
}
一周热门 更多>