51 单片机串口通信错误的原因
时间:2013-01-15 17:43:08 来源:21ic 博客 作者:
之前发过一篇博文《MCU-51 串口通信程序》,程序挺好用的,之后一直把 串口
当做测试用途,像正在调试 USB,用的是 CH372,PC 通过 CH372(USB)发一个字符
到单片机,单片机再通过串口回传这个字符,从而验证 CH372 是否收到字符,
结果出现意想不到的错误,错误还挺有规律的。就是发 16 位字符 0A,接收到字
符用 16 位显示是 8A;发 2A,显示 AA;发 2B, 显示 AB,就是最高位(第 8 位)0
变为 1 了,试验了几个都是一样。
点击看原图
之前老板也是同样的问题(可见这事是多么普遍),不过当时由于不是我的事,就
没管。问了一下老板,才知道是晶振的问题,之前板子是用 11.0952MHz 晶振,
现在的板子是 12MHz,程序中串口通信也没改预置值,直接就下载了,结果是误
差太多,前面的码没事,但误差积累,最后的码 0 就变成 1 了。敲响警钟!
经验分享:学习单片机重要的是实践,所以开发板是很重要,给大家推荐些淘宝上信誉良好