您的位置 首页 IC

51系列单片机之串口通讯

单片机的串口通信看起来是很复杂的,主要是因为他用到了更多的寄存器,与前面的知识相比他更具综合能力,写起来考虑的问题自然也变多了.而前面…

单片机串口通讯看起来是很杂乱的,首要是由于他用到了更多的寄存器,与前面的常识比较他更具归纳才能,写起来考虑的问题天然也变多了.而前面学习过的定时器与中止将是单片机通讯的根底.
单片机的中止体系中第4个中止便是串口中止,要进行串口通讯首要就要翻开CPU总中止EA,还要翻开串口通讯中止ES,这是串口通讯的前堤,而串口通讯也跟计时器相同有许多的形式,因而咱们还要设置SCON寄存器来指定选用哪一种方法进行通讯,而在通讯的过程中,咱们还要设定通讯的波特率,否则的话,单片机是没办法进行采样的,这样也不会得到正确的成果了.我在试验过程中用到的是1号定时器来设定的波特率,用到了计时器方法2,也便是8位主动重装,这样能够简化编程,她的完成思维便是将常数放入TH,而TL中则是初始化参数,当溢出时,单片时机主动将TH中的常数装入TL中.

再来说说波特率,咱们为什么要设定波特率,由于单片时机以16倍波特率的速度进行采样,而在试验中咱们用的是10位异步收发方法,因而要将SM0置0,SM1置1.而其间的10位有8位数据位,第一位和最终一位是发送数据的开始与完毕.选用高的皮特率就不会犯错啦.而波特率是有一个公式的:
方法0的波特率 = fosc/12
方法2的波特率 =(2SMOD/64)· fosc
方法1的波特率 =(2SMOD/32)·(T1溢出率)
方法3的波特率 =(2SMOD/32)·(T1溢出率)
T1 溢出率 = fosc /{12×[256 -(TH1)]}
依据公式咱们很简单就算出当晶振为110592HZ时,要到达9600的波特率,咱们只需要将TL1置FDH即可,如下图:

除此之外,你还要将SCON中的REN方位1,否则的话,单片机是不会接纳数据的.
还有不要忘了挑选定时器的作业方法,设置TMOD为0x20既是作业方法2,8位主动重装定时器.
这样一来,初始批作业算是差不多了.而串口通讯分为中止方法,和查询方法,假如你想用查询方法你也不必设置IE寄存器了.
在串口通讯中,还有一个很重要的寄存器SBUF,其实也不是一个,是两个,仅仅它们共用同一个地址,再热气表达式的不同,单片时机主动挑选运用哪一个SBUF.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/263651.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部