51单片机proteus仿真串口通信发数,以9600bps传输,单片机时钟设成了12M及以上,发出

51单片机proteus仿真串口通信发数,以9600bps传输,单片机时钟设成了12M及以上,发出的0在终端显示为80,2显示为82(16位显示),把时钟改成11.059... 51单片机proteus仿真串口通信发数,以9600bps传输,单片机时钟设成了12M及以上,发出的0在终端显示为80,2显示为82(16位显示),把时钟改成11.0592M及以下,0显示为00,2显示为02。我知道这是由于发送的时序和接收的时序对不上导致的,不过是否能从串口通信的原理上把00变成80解释一下? 展开
 我来答
时之默言
2015-02-07 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:55
采纳率:100%
帮助的人:51.6万
展开全部

我的理解是:由于单片机时钟频率在12MHz时,和上位机的波特率存在误差,时钟信号和数据信号存在不同步现象。


从这个图我们可以看出:像10位数据,会有一个起始位0和一个停止位1,而数据是从低位到高位依次发送。当单片机的实际波特率高于上位机时,单片机开始发送停止位1的时候,上位机才接收到D7位,所以讲停止位1当作D7。所以无论发什么数据,都会是dat|0x80这个结果。个人理解,仅供参考。

更多追问追答
追问
那这样的话上位机接收的结束位是什么呢?
追答

看这个(1),数据线在没有数据发送的时候,保持1状态。所以当上位机接收时钟到的时候,数据线是1,所以上位机就将这个1当作停止位了。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shamoguo
2015-02-07 · TA获得超过103个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:125万
展开全部
你说的终端是什么?proteus在串口仿真的时候bug很多的。
更多追问追答
追问
就是那个Virtual Terminal,我知道proteus问题确实很多,但是我觉得这个问题不是proteus本身的bug
追答
那个能设置波特率?
单片机波特率是在程序里边设置的。你把单片机的频率改了又不是改了波特率。
我说的bug就是在串口仿真的时候,有几个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式