有关串口的数据传输代码
时间: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将其右移?
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积分