首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

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

2012-02-06 
谁帮我看看这个串口的部分程序 谢谢这是串口通信程序在书抄下来的其中一部分是这样的发送请求信号0xaa等待

谁帮我看看这个串口的部分程序 谢谢
这是串口通信程序   在书抄下来的   其中一部分是这样的     发送请求信号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处死掉。
首先需要确认,串口上确实是收到数据了。
把你的串口初始化和串口中断服务程序贴出来看一看。可能是波特率或者中断什么的设置不对。
[解决办法]
开串口中断啊,用中断方式多方便哈。

热点排行