今天闲来无事,再次操起很久之前的一块板子,板载stc15芯片,要做个串口通信。看完数据手册直接写程序,写完烧写进去后测试串口不通。
百思不得其姐啊,小编写了不下十次的串口程序,今天怎么就不通了呢?
好吧,老老实实的再看一遍数据手册(话说小编写程序都是看着数据手册写的),看完后更是郁闷了,哪哪都没问题啊,但是就是不通。
好吧,再回来从头仔细看程序,从申明到函数定义,从初始化到中断函数,都没问题,最后看主函数吧。
因为小编用P3.3口驱动一个三极管,所以偷懒写了:
P3M1=0x00;
P3M0=0xff;
整个程序就只是比平时的多了这两句。是它的原因引起了串口通信不正常的吗?抱着试试的态度,把以上程序改为:
P3M1=0x00;
P3M0=0x00;
在测试,完美解决问题,串口通信正常,收发都正常↓↓。
所以问题就出在这里。
这样下结论是不是太早了,小编还算严谨,接着往下测试,
就之前的问题,我既然是设置为输出模式,那按道理是要能发送数据才对吧,好吧,小编改代码,下载测试↓↓
果不其然,还真的能发送数据。
到此,测试结束,可以大胆的说了,小编今天遇到的问题就是因为错误的设置了IO口的工作模式引起的。
科普:
STC单片机从12系列后就支持IO的工作模式的设置了,有兼容传统51的双向IO,强上拉推挽输出,输入,开漏四种模式,我们在使用是请一定按实际使用要求设置,具体设置方式请看下图↓↓
最最后,今天的问题,相信很多小伙伴都遇到过,在此就算给自己或者大家提个醒,你也遇到过同样的问题请点赞,如果你还没遇到望后续学习中不要在出现这样的问题,你在单片机学习的道路上遇到过哪些头疼的问题,文后留言和大家交流,小编前来学习。