微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 有关串口的数据传输代码

有关串口的数据传输代码

时间:10-02 整理:3721RD 点击:
        if (cnt == 0)     //处理起始位         {
             if (!PIN_RXD) //起始位为 0 时,清零接收缓冲器,准备接收数据位
             {
                 RxdBuf = 0;
                 cnt++;
             }
            else           //起始位不为 0 时,中止接收
             {
                 TR0 = 0;  //关闭 T0
             }
         }
         else if (cnt <= 8)   //处理 8 位数据位
         {
             RxdBuf >>= 1;    //低位在先,所以将之前接收的位向右移
             if (PIN_RXD)     //接收脚为 1 时,缓冲器最高位置 1,
             {
                  //而为 0 时不处理即仍保持移位后的 0
                 RxdBuf |= 0x80;
             }
             cnt++;
         }
         else  //停止位处理
         {
             cnt = 0;          //复位 bit 计数器
             TR0 = 0;          //关闭 T0
             if (PIN_RXD)     //停止位为 1 时,方能认为数据有效
             {
                 RxdEnd = 1;  //置接收结束标志
             }
         }

这是51单片机定时器程序中的一部分
目的是接收数据
是教程中的程序
想要问的是
为什么不需要将PIN_RXD赋值给RxdBuf?
以及
为什么低位在先就将RxdBuf将其右移?

奖励1积分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top