单片机串行口

[复制链接]
查看11 | 回复2 | 2010-12-10 23:05:44 | 显示全部楼层 |阅读模式
单片机接受或发送数据完一帧数据后TI或RI 会自动置位,提示CPU 去响应中断,问题是我不需要进入中断,CPU查询TI RI ,为什么要清零呢?莫非是只有将其清零才可以处理下一帧数据么?不清零会出现什么问题?谢谢
51单片机,我就想知道查询方式下为什么要清零,不清零的话是不是就不发送下一帧数据了?书上讲的都不太明白。

回复

使用道具 举报

千问 | 2010-12-10 23:05:44 | 显示全部楼层
RI置位表示已经收到一个数据,这时串口仍然可以接收数据,只是会造成新的数据把旧的数据覆盖掉。TI置位表示发送完成,你可以继续发送下一字节。如果不清零,那是什么后果?假定刚开始RI为0,在收到一字节数据后RI为1,CPU查询得知RI为1就从SBUF读取数据,所以说RI为1时表示收到了数据,如果不清零,单片机每次查询的时候都“认为”是收到了数据而读取SBUF,这样即使串口没有收到新的数据,CPU也在不断的读,只是读取收到的那一字节!所以不把RI清零,CPU就无法确定是否收到了新的数据,这个你能理解吧?如果TI不清零,则CPU认为已经发送完,这样的结果就是一个字节还没发送完成,就写入另一个要发送的字节,造成串口发送的数据错误或串口无法
回复

使用道具 举报

千问 | 2010-12-10 23:05:44 | 显示全部楼层
不清零,当然可以,也能继续发送,也能继续接收。但是如果不清零,保留着这个1,那么你就不知道,它们什么时候会出现下一个1了。当然,如果不想继续发送或接收,完全可以不清零。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行