关于51单片机编程的一些错误总结

来源:本站
导读:目前正在解读《关于51单片机编程的一些错误总结》的相关信息,《关于51单片机编程的一些错误总结》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《关于51单片机编程的一些错误总结》的详细说明。
简介:(单片机基础知识之单片机程序的完善)关于51单片机编程的一些错误总结

(1)这两天一直在受一个问题的干扰,那就是做单片机串口通信的时候,有些数据总是传得不对:当显示0~f这些数字的时候,显示没有错误,而显示其它8位数据的时候都错了,发送11(16进制)时,到单片机上居然是49(十进制),这显然是不对的,一直怀疑是程序的问题,反复地检查和修改之前编的一个数码管动态显示子程序,没有错,那只能是串口初始化和串口子程序有问题了……这么想太错了……先入为主,两天以来,都没解决(其实也没什么心情解决了,又是临近周末,都在看老友记),今天打定一定要解决了,就开始研究,刚开始一直在沿着老路,反复修改程序。。。。后来无意间一瞥,看到晶振上标着“12.000”,瞬间明白所有问题所在,立刻改为11.0592Mhz的晶振,这个开发板是别人的……居然还有人用12M的晶振!实在无语……

如果用12M的晶振,那么波特率只能用1200了,极慢无比的速度……想用其他的波特率(2400、4800、9600)等就等用11.0592M,具体为什么,看书去……

(2)第二个问题,还是串口通信的。编程的时候一直用的查询RI的方法,来接收数据,因为中断法就没成功过。。今天想了一下原因,参考了下别人的程序,把ET1=1给注释掉,发现可以了。。。这是因为利用定时器1作为波特率发生器时,是不用开启中断的(但要开启定时器,即置位TR1)。如果开启了中断,这时候定时器1的中断优先级会默认比串口的高,那样就有很大的可能进入不了串口的中断服务程序,也就无法接收数据了。

提醒:《关于51单片机编程的一些错误总结》最后刷新时间 2024-03-14 01:12:42,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《关于51单片机编程的一些错误总结》该内容的真实性请自行鉴别。