单片机串行口
单片机接受或发送数据完一帧数据后TI或RI会自动置位,提示CPU去响应中断,问题是我不需要进入中断,CPU查询TIRI,为什么要清零呢?莫非是只有将其清零才可以处理下一帧...
单片机接受或发送数据完一帧数据后TI或RI 会自动置位,提示CPU 去响应中断,问题是我不需要进入中断,CPU查询TI RI ,为什么要清零呢?莫非是只有将其清零才可以处理下一帧数据么?不清零会出现什么问题?谢谢
51单片机,我就想知道查询方式下为什么要清零,不清零的话是不是就不发送下一帧数据了?书上讲的都不太明白。 展开
51单片机,我就想知道查询方式下为什么要清零,不清零的话是不是就不发送下一帧数据了?书上讲的都不太明白。 展开
3个回答
展开全部
RI置位表示已经收到一个数据,这时串口仍然可以接收数据,只是会造成新的数据把旧的数据覆盖掉。TI置位表示发送完成,你可以继续发送下一字节。
如果不清零,那是什么后果?
假定刚开始RI为0,在收到一字节数据后RI为1,CPU查询得知RI为1就从SBUF读取数据,所以说RI为1时表示收到了数据,如果不清零,单片机每次查询的时候都“认为”是收到了数据而读取SBUF,这样即使串口没有收到新的数据,CPU也在不断的读,只是读取收到的那一字节!所以不把RI清零,CPU就无法确定是否收到了新的数据,这个你能理解吧?
如果TI不清零,则CPU认为已经发送完,这样的结果就是一个字节还没发送完成,就写入另一个要发送的字节,造成串口发送的数据错误或串口无法工作,明白?
如果不清零,那是什么后果?
假定刚开始RI为0,在收到一字节数据后RI为1,CPU查询得知RI为1就从SBUF读取数据,所以说RI为1时表示收到了数据,如果不清零,单片机每次查询的时候都“认为”是收到了数据而读取SBUF,这样即使串口没有收到新的数据,CPU也在不断的读,只是读取收到的那一字节!所以不把RI清零,CPU就无法确定是否收到了新的数据,这个你能理解吧?
如果TI不清零,则CPU认为已经发送完,这样的结果就是一个字节还没发送完成,就写入另一个要发送的字节,造成串口发送的数据错误或串口无法工作,明白?
展开全部
不清零,当然可以,也能继续发送,也能继续接收。
但是如果不清零,保留着这个1,那么你就不知道,它们什么时候会出现下一个1了。
当然,如果不想继续发送或接收,完全可以不清零。
但是如果不清零,保留着这个1,那么你就不知道,它们什么时候会出现下一个1了。
当然,如果不想继续发送或接收,完全可以不清零。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你的是什么单片机,可以将单片机串口配置为非中断模式阿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询