打印

C51中putchar源码的问题

[复制链接]
1167|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
醉心369|  楼主 | 2014-12-4 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 醉心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是有什么作用,为什么在向串口发送数据时,还要判断这两个字符?

相关帖子

沙发
ayb_ice| | 2014-12-4 15:48 | 只看该作者
这好像是个协议,可以暂停串口传输

使用特权

评论回复
板凳
ningling_21| | 2014-12-4 16:55 | 只看该作者
一般是协议规定的,光看这一点是无法解释的

使用特权

评论回复
地板
醉心369|  楼主 | 2014-12-4 17:28 | 只看该作者
本帖最后由 醉心369 于 2015-12-28 11:23 编辑

什么协议规定的,在哪里可以找到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝