读书人

请问帮小弟我看看这个串口有关问题

发布时间: 2012-02-08 19:52:21 作者: rapoo

请教,帮我看看这个串口问题,好吗?
请教,帮我看看这个串口问题,好吗?

void ComInStr() interrupt 4 //串行口中断
{
if(RI)
{
if (j> 4)
{
j=0;
receive=1; //接收标志置位
}
else
{
rece[j]=SBUF;
j++;
}
RI=0;
}
}


main()
{
while(1)
{
if(receive)
{
Sendtex();
receive = 0;
}
}
}
大哥:
您好!
我这个串行口中断,还不是很好,
因为,假设开始 发了 '111 ' 3 个字符
隔了一段又发 '11 ' 2 个字符,总共是 5个字符
那么 j = 5 ,eceive=1; //接收标志置位 ,
本来这样的情况是不符合要求的,

那要怎么处理啊,一般是设置多久如果还没有接收到
5 个字符,则 j 重新置 0 啊
这样的程序怎么写?

谢谢!


[解决办法]
接收中断
没未处理的数据
如果J == 0
从新接收未处理数据并接收数据,启动定时
如果J == 4 && 未超时
声明未处理数据接收完成
否则
重置状态

接收

读书人网 >单片机

热点推荐