下面是串行接收中断函数
void serial() interrupt 4
{
if(RI)
{
uchar i,j;
uchar ch;
RI = 0;
ch = SBUF;
if(i < 1)
{
j =0;
Receive_Buf[j] = ch;
i = 1;
}
else
{
j++;
i++;
Receive_Buf[j] = ch;
if(i > 16)
{
i = 0;
j = 0;
R_flag = 1;
}
}
}
}
毕设要用,拜托各位大神。。。。
谢谢大哥,我试一下。感觉你的第三条比较有道理。
试过了,还是有时候能接收到,有时候接收不到。
追答1、你可以将串口优先级设最最高试试
2、这个中断要是R_flag=1,需要接收17个数据,你发送的数据个数是否如此。
接收到的时候显示和回送的数据都是正确的,现在的问题是有时候接收到,有时候接收不到,我试一试将串口优先级设为最高。
本回答被网友采纳相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
不是,相同的一段报文,相同的设置,有时候能接收到,有时候接收不到,。要说哪里设置错误了,可是有时候能接收到,并且显示和回送的报文都是正确的,真不知道怎么回事。
追答我也出现过,是不是主程序太长了?上次我的就是主程序太长
追问应该不是这方面的问题。