在STC12C5A60S2串口2 遇到个问题,有哪位高手帮忙看看!
void SerialServer() interrupt 8 //串口2中断只接受地址
{
if(S2CON&=S2RI)
{
S2CON&=~S2RI;
while(!(S2CON&S2RI));
reciveaddrBUF2=S2BUF;
S2CON&=~S2RI;
P0=reciveaddrBUF2;
delay(1000);
if(reciveaddrBUF2==sendaddrBUF2)
{
temp++;
i++;
}
}
if(S2CON&=~S2TI)
{;}
}
时序图在上面,问题是:
在我的程序里面,选择的是工作模式1,我的串口2中断服务程序是如果收到数据是应该马上接受并放入S2BUF里面的,然后把数据放到PO口的流水灯显示的,为什么发第一次没有显示,发第二次才有显示出来??困扰当中,求解! void SerialServer() interrupt 8 //串口2中断只接受地址
{
S2CON&=~S2RI;
while(!(S2CON&S2RI));
reciveaddrBUF2=S2BUF;
S2CON&=~S2RI;
P0=reciveaddrBUF2;
delay(1000);
if(reciveaddrBUF2==sendaddrBUF2)
{
temp++;
i++;
}
}为什么代码是这样子就能一次顺利接收到数据? S2CON&=S2RI ---->S2CON=S2CON&S2RI。
页:
[1]