总是自动进入串口中断

菜鸟请教各位前辈,为什么一下这段程序会自动进入中断,我想要用上位机发送“0xff”,下位机才进行回应,但是我用串口助手发送0xff以后就中断就一直在循环,中断不是只有在接... 菜鸟请教各位前辈,为什么一下这段程序会自动进入中断,我想要用上位机发送“0xff”,下位机才进行回应,但是我用串口助手发送0xff以后就中断就一直在循环,中断不是只有在接收到数据才会打开吗,为什么一直会打开,另外我用查询法也试了,查询法是可以,在线仿真时用串口助手可以发一次收一次,但是我烧录到单片机以后就不成功了,好郁闷,这是为什么啊,在线仿真可以,烧录以后就不行,求解,谢谢

void main()
{
init();
while(1)
{
//while(!RI);
//RI=0;
//temp=SBUF;
if(temp==0xff)
{
adval2=AD(2);
A1=adval2/100;
A2=adval2%100/10;
A3=adval2%10;
adval1=AD(1);
for(a=10;a>0;a--)
{
display(A1,A2,A3);
};
SBUF=adval1;
while(!TI);
TI=0;
delayms(10);
SBUF=adval2;
while(!TI);
TI=0;
delayms(10);
SBUF='O';
while(!TI);
TI=0;
temp=0;
ES=1;
}
}
}

void ser() interrupt 4
{
RI=0;
temp=SBUF;
if(temp==0xff)
{
ES=0;
RD=!RD;
delayms(500);
flag=1;
}
}
展开
 我来答
做而论道
高能答主

2015-10-14 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
你写这程序,目的是什么?

中断函数中,你怎么还延时delayms(500); ?

延时期间,串口又收到数据,这可怎么办?
更多追问追答
追问
中断里面的RD我接了一个发光管,用来看是否我没数据也会自动进入中断,我试了一下,只要我发送一次数据,就会自动进入中断,发光管一直在闪烁,即使我拔了串口线还是在进入
追答
收到 FF 后,SBUF 里面就是 FF。
你拔除了引线,SBUF 里面,就永远是 FF。

你的主函数,还有发送的语句,也会引起串口中断。

而你的串口中断函数,也不区分发送中断、或接收中断,只是看 SBUF==FF,就闪烁。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式