首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
51单片机串行通信程序的设计及调试
来源:本站整理  作者:佚名  2010-08-11 09:54:24



  在很多应用场合下,我们都希望单片机应用系统能够与其它系统(计算机、PLC或另一个单片机应用系统)进行通信,51单片机内部集成了一个异步串行通信口(UART),应用这个UART,我们可以很方便地与一切具有UART接口的其它系统进行通信。

  要在两个不同的系统中进行通信,必须保证它们具有相同的通信协议和相同的波特率,而且能够按照通信的协议发送和接收数据,为此需要设计串行通信程序。

  1.51单片机的UART接口

       51单片机的UART接口是一个全双工的串行接口,它能同时发送和接收数据。51单片机的UART接口有4种工作方式,需要通过对特殊功能寄存器SCON的设置来定义串行口的操作方式和控制它的某些功能。

  SM0 SM1=00为移位寄存器方式(串行口工作方式0),SM0SM1=01为8位UART方式(串行口工作方式1),SM0 SM1=10为9位UART方式(串行口工作方式2),SM0SM1=11为9位UART方式(串行口工作方式3)。

  不同的工作方式还具有不同的波特率,串行口以方式0工作时,波特率固定为振荡器频率的1/12。为方式2时波特率为振荡器频率的l/64或1/32。它取决于特殊功能寄存器PEON中的SMOD位的状态。如果SMOD=0(复位时SMOD=0),波特率为振荡器频率的1/64。如果SMOD=1,波特率为振荡器频率的1/32。

  方式1和3的波特率由定时器1的溢出率所决定。当定时器1作波特率发生器时,波特率由下式确定:

  波特率=(定时器l溢出率)/n式中:定时器1溢出率=定耐器1的溢出次数/秒,n为32或16,取决于特殊功能寄存器PCON中的SMOD位的状态,若SMOD=0,则n=32,若SMOD=1,则n=16。

  对于定时器的不同工作方式,得到的波特率的范围是不一样的,这主要由定时器1的计数位数不同所决定。

  2、串行通信程序的设计要素

      51单片机串行通信程序的设计包括4项基本内容:

  ◆初始化程序


      通过对特殊功能寄存器SOON和PEON的设置,来选择串行口的工作方式,设置通信的波特率。如果通信采用中断方式,则还要对中断系统进行设置。

  ◆发送数据的程序

       51单片机串行口发送数据的条件是串行口已准备好,此时标志位TI的状态为“1”,串行口发送数据的方法很简单,只要由一条写SBUF指令(例:MOV SBUF,A)将待发数据传送到发送数据缓冲器SBUF,即启动一次发送。

  ◆接收数据的程序

       51单片机串行口接收数据的条件是SOON中的REN为“1”,接收时,在接收控制逻辑的作用下,按确定的波特率进行移位操作。将RXD脚输入的状态逐位移入移位寄存器中,待接收完一个字节的数据后,自动将其并行地装入接收缓冲寄存器SBUF中,同时将SCON中的RI置“1”。标志位RI的状态为“1”,表明串行口已经收到一个字节的数据,此时用一条读SBUF指令(例:MOV A,SBUF)即可取得收到的数据。

  ◆通信控制程序

       用来控制发送与接收的进行,一般将其融合在收发程序中。

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:14,726.56000 毫秒