weidni2009 发表于 2013-5-11 14:48:09

在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口的流水灯显示的,为什么发第一次没有显示,发第二次才有显示出来??困扰当中,求解!

weidni2009 发表于 2013-5-11 14:58:05

void SerialServer() interrupt 8                       //串口2中断只接受地址
{                               

                                S2CON&=~S2RI;
                                while(!(S2CON&S2RI));
                                reciveaddrBUF2=S2BUF;
                                S2CON&=~S2RI;
       
                                P0=reciveaddrBUF2;
                                delay(1000);
       
       
                                if(reciveaddrBUF2==sendaddrBUF2)
                                {
                                        temp++;
                                        i++;
                                }
                                      


}为什么代码是这样子就能一次顺利接收到数据?

tam2907 发表于 2013-5-14 09:10:06

S2CON&=S2RI ---->S2CON=S2CON&S2RI。
页: [1]
查看完整版本: 在STC12C5A60S2串口2 遇到个问题,有哪位高手帮忙看看!