两仪式 发表于 2021-1-6 12:16 就是单片机已经开始发送字符了,但电脑那边还没准备好接收。 导致电脑误把低电平数据位当成了起始位,导致数据错位,最终出现传输错误 具体的在这里 http://www.51hei.com/bbs/dpj-201131-1.html |
两仪式 发表于 2021-1-6 12:16 就是不说 ![]() |
guysxpf 发表于 2021-1-6 12:02 什么问题说清楚啊 |
发现了两个问题,已经解决了:1、波形是正确的,没有问题,应该是先发低位,再发高位。我给搞反了,但这并不是问题的关键 2、核心原因在这里:http://www.51hei.com/bbs/dpj-201131-1.html 帖子正在审核,稍微等等就能看到了 |
人人学会单片机 发表于 2021-1-6 11:42 好的,多谢提醒 |
jjjjjjir 发表于 2021-1-6 11:46 已经找到问题的关键了,谢谢 |
cocolala 发表于 2021-1-6 10:38 问题已经解决了,不过还是谢谢您 |
是不是将串口设置成9位的工作模式了?检查一下串口的寄存器设置是否有误 |
TXD 口需要推挽 |
1、楼主可以把STC8的单片机型号全称注明下吗?因为STC8下系列种类较多,不同型号可能会有所不同。 2、本人有使用STC8A8K64S4A12单片机,该型号单片机官方手册给出了发送过程说明及示意图,明确了起始位是低电平,停止位是高电平。 ![]() 发送过程:串行通信模式发送时,数据由串行发送端TXD输出。当主机执行一条写SBUF的指令就启动串行通信的发送,写“SBUF”信号还把“1”装入发送移位寄存器的第9位,并通知TX控制单元开始发送。移位寄存器将数据不断右移送TXD端口发送,在数据的左边不断移入“0”作补充。当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第9位“1”,在其左边各位全为“0”,这个状态条件,使TX控制单元作最后一次移位输出,然后使允许发送信号“SEND”失效,完成一帧信息的发送,并置位中断请求位TI,即TI=1,向主机请求中断处理。 3、楼主亦可把程序关于串口配置及发送的源码贴出。 |