本帖最后由 醉心369 于 2016-3-14 10:27 编辑
#define XON 0x11
#define XOFF 0x13
char putchar (char c)
{
if (c == '\n')
{
if (RI) //查询串口有无数据输入,若串口有数据输入,则执行下面语句;
{
if (SBUF == XOFF)
{
do{
RI = 0;
while (!RI);
}while (SBUF != XON); //若串口接收到的是XON的值,则停止接收;
RI = 0; //将RI=0,为下次接收做准备;
}
}
while (!TI); //等待串口将上一次的数据发送完毕;
TI = 0; //为下次发送做准备;
SBUF = 0x0d; //将回车符'\r'(值为0x0d)写入串口发送缓冲器,等待发送;
}
if (RI) //查询串口有无数据输入,若串口有数据输入,则执行下面语句;
{
if (SBUF == XOFF)
{
do{
RI = 0;
while (!RI);
}while (SBUF != XON); //若串口接收到的是XON的值,则停止接收;
RI = 0; //将RI=0,为下次接收做准备;
}
}
while (!TI); //等待串口将上一次的数据发送完毕;
TI = 0; //为下次发送做准备;
return (SBUF = c); //将c的值写入串口发送缓冲器,等待发送;;
}
这个源码XON和XOFF是有什么作用,为什么在向串口发送数据时,还要判断这两个字符?
|