标题: 51单片机串口通信一个鲜为人知而又不可不知的细节 [打印本页]

作者: zxwdown    时间: 2019-3-28 20:46
标题: 51单片机串口通信一个鲜为人知而又不可不知的细节
     人们在使用51单片机串口通信的时候,往往只注意对串口的初始化,中断程序编写以及关注晶振的频率,很少再关注其他方面的细节。一般注意以上三个方面也已经够啦,可以顺利完成串口通信程序的编写。但有一个细节一般人很少关注,如果因为这个细节而使串口通信程序无法工作,将很难排查错误,因为程序根本就没错,所以无法通过程序功能逻辑来排查程序错误,对于较有经验的老手往往也要花很长时间调试来查找错误,对于经验不足的新手,可能就无法找出错误。这个细节就是串口的状态,也就是P3.0即RxD和P3.1即TxD,这两个IO口一定不能置0,有时不小心,用一条指令P3=0;将导致串口无法正常工作,必须用指令将P3.0和P3.1置1才能使用串口正常工作。如果单独将P3.0置0,串口将无法接收数据,但可以发送数据,如果单独将P3.1置0,串口将无法发送数据,但可以接收数据。这是本人经历过见艰难的排查错误得到的体会,在此与同学们分享经验,希望同学们不要再被这个细节所困。
作者: bbc699    时间: 2019-3-28 22:58
谢谢分享
作者: luvemcu    时间: 2019-3-29 08:37
谢谢提醒,这个大概在使用汇编语言过程中才能出现
作者: zxwdown    时间: 2019-3-29 10:49
luvemcu 发表于 2019-3-29 08:37
谢谢提醒,这个大概在使用汇编语言过程中才能出现

    我是在编写红外遥控程序时,参考别人的程序,将一段代码考入我的程序中,结果这段代码就把串口置0,排查太久才发现这个问题。
作者: Jackis    时间: 2019-3-29 18:37
十分感谢
作者: robinsonlin    时间: 2019-3-30 12:55
养成好习惯。P3就不要做端口赋值。
作者: 持勤补拙    时间: 2020-3-2 18:46
太细微了,感谢楼主
作者: bg5skf    时间: 2020-3-3 23:51
zxwdown 发表于 2019-3-29 10:49
我是在编写红外遥控程序时,参考别人的程序,将一段代码考入我的程序中,结果这段代码就把串口置0, ...

我最近用汇编写多机通讯程序,调试中出现一些莫名其妙的问题,说不定就是这个问题哦,明天好好查查。谢谢分享!
作者: qaz_1234    时间: 2020-3-4 13:39
谢谢楼主分享!!!感谢!
作者: miqi0708    时间: 2020-3-4 18:04
谢谢楼主分享!!!感谢!
作者: hbcqd    时间: 2020-3-9 21:27
这个是宝贵的经验,谢谢分享!
作者: zhangweiyu    时间: 2020-3-10 21:47
谢谢!





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1