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