当前位置: 代码迷 >> 单片机 >> 哪位高手帮小弟我看看这个串口的部分程序 多谢
  详细解决方案

哪位高手帮小弟我看看这个串口的部分程序 多谢

热度:64   发布时间:2016-04-28 16:20:41.0
谁帮我看看这个串口的部分程序 谢谢
这是串口通信程序   在书抄下来的   其中一部分是这样的     发送请求信号0xaa   等待响应0xbb
                  do
{
SBUF=Send_Inf; ///发送联络信号   aa
while(TI==0);                       //确认发送完了
TI=0;                             //复位
while(RI==0);                             //等待响应
RI=0;                                           //复位
}while((SBUF^0xbb)!=0);                   //判断是否为同意通信信号
但我用串口调试的时候   总是循环   也就是说这个SBUF^0xbb不起作用!为什么呢?

还有一个
i=serial_receive();//调用接收子程序,接收数据
unsigned   char   serial_receive(void)
{
  while(RI==0);//等待接收数据
  RI=0;//接收到数据,清除接收完毕标志
  return(SBUF);//返回接收数据
}

串口调试结果:运行了i=serial_receive();这条语句后,那个i是不会变的   总是0x00;就是接收不了传来的值!这又是为什么?



------解决方案--------------------
看你的第二个程序,要么是串口没有初始化(所以RI一直为零);要么数据是收到了的,要不不会返回0x00,而是在while处死掉。
首先需要确认,串口上确实是收到数据了。
把你的串口初始化和串口中断服务程序贴出来看一看。可能是波特率或者中断什么的设置不对。
------解决方案--------------------
开串口中断啊,用中断方式多方便哈。
  相关解决方案