找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5063|回复: 0
收起左侧

曾经RS232串口通信的感悟

[复制链接]
ID:60266 发表于 2014-8-18 21:47 | 显示全部楼层 |阅读模式
     一个月前,进行了最为基础的rs232串口通信实验。当时还不懂中断是什么,而在查找串口通信资料的时候一直在被强调可以使用中断或是查询模式,当然查询也不懂。中断算是比较难以接受的,因为之前在用VC++编译C语言程序时,程序中只有一个main()函数的思想已经根深蒂固,不是不明白而是出于对中断的抵触不可接受。后来由于多次接触,渐渐的也发现了它的重要性,单片机程序中main()函数跟中断服务程序是同等级别的,中断发生时中断的是当前运行的main()函数。
       用了两天的时间也大抵搞清楚了有关定时/计数器,以及中断相关的寄存器,一个采用中断模式的RS232程序也就随之编写完了。把程序烧写到flash之后通过RS232串口能够跟电脑通信,但是发送给上位机的数据一直是混乱的,完全不听从我的设置。我忽视了一个重要的细节,有关波特率的调节问题,说到底就是晶振选择不合理。选用11.0592的晶振才能够得到整数的波特率,以此减小波特率误差。然而我一直用的12M晶振,这样的错误竟然持续了50次之多,搞清楚了原因之后问题才得以解决。后来当我引用按键控制的时候问题又来了,按一次按键发送的数据长短不一,或多或少。原因是我忽视了按键抖动问题,按一次按键按键分合的次数往往不止一次。当时如果不是一位前辈指点怕是我极难找到这个问题,在进行软件消抖之后问题也就解决了,最终想要的效果终于得到了。
       在完成了RS232通讯实验后后面的一系列通讯业变得简单了起来,后来又一一实践了SPI,usart,等同步通信方式,并且开始着手USB的学习。在经历了种种失败之后越来越明显的感觉到了一个问题,就我们目前所遇到的困哪而言,其实解决的方案都很简单实施的过程也很方便,而发现问题所在才是隐藏最深最为重要的一步。就像我们在电工实习以及电子实习时候的检修工作一样,问题一旦被发现基本上能够迅速解决,然而发现问题却显得格外棘手。以后遇到的问题,也并不是想电工实习检修拿着万用表逐个排查那么简单,更多的时候需要静下来思考思考,查阅资料。总之发现问题,往往比解决问题更加关键。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表